1*4b0a76a3SPierre van Houtryve; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4 2*4b0a76a3SPierre van Houtryve; RUN: llc < %s -global-isel -stop-after=irtranslator -mtriple=amdgcn -mcpu=gfx900 | FileCheck %s -check-prefixes=GFX9 3*4b0a76a3SPierre van Houtryve 4*4b0a76a3SPierre van Houtryve; tests bf16 argument & return values lowering. 5*4b0a76a3SPierre van Houtryve 6*4b0a76a3SPierre van Houtryvedefine <3 x bfloat> @v3bf16(<3 x bfloat> %arg0) { 7*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v3bf16 8*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 9*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1 10*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 11*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 12*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 13*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 14*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 15*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 16*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 17*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 18*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 19*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32) 20*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s16>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>) 21*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT bfloat 0xR0000 22*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16), [[C]](s16) 23*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[SHUF:%[0-9]+]]:_(<3 x s16>) = G_SHUFFLE_VECTOR [[TRUNC]](<3 x s16>), [[BUILD_VECTOR1]], shufflemask(3, 1, 2) 24*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[SHUF]](<3 x s16>) 25*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 26*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 27*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT4]](s32) 28*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT5]](s32) 29*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1 30*4b0a76a3SPierre van Houtryve %res = shufflevector <3 x bfloat> %arg0, <3 x bfloat> zeroinitializer, <3 x i32> <i32 3, i32 1, i32 2> 31*4b0a76a3SPierre van Houtryve ret <3 x bfloat> %res 32*4b0a76a3SPierre van Houtryve} 33*4b0a76a3SPierre van Houtryve 34*4b0a76a3SPierre van Houtryvedefine <4 x bfloat> @v4bf16(<4 x bfloat> %arg0) { 35*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v4bf16 36*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 37*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1 38*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 39*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 40*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 41*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 42*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 43*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 44*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 45*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 46*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 47*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32) 48*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[BUILD_VECTOR]](<4 x s32>) 49*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT bfloat 0xR0000 50*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16) 51*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[SHUF:%[0-9]+]]:_(<4 x s16>) = G_SHUFFLE_VECTOR [[TRUNC]](<4 x s16>), [[BUILD_VECTOR1]], shufflemask(3, 1, 2, 0) 52*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[SHUF]](<4 x s16>) 53*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 54*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 55*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT4]](s32) 56*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT5]](s32) 57*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1 58*4b0a76a3SPierre van Houtryve %res = shufflevector <4 x bfloat> %arg0, <4 x bfloat> zeroinitializer, <4 x i32> <i32 3, i32 1, i32 2, i32 0> 59*4b0a76a3SPierre van Houtryve ret <4 x bfloat> %res 60*4b0a76a3SPierre van Houtryve} 61*4b0a76a3SPierre van Houtryve 62*4b0a76a3SPierre van Houtryvedefine <5 x bfloat> @v5bf16(<5 x bfloat> %arg0) { 63*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v5bf16 64*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 65*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2 66*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 67*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 68*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 69*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 70*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 71*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 72*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 73*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 74*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 75*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 76*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](s32) 77*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 78*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 79*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32), [[ANYEXT4]](s32) 80*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<5 x s16>) = G_TRUNC [[BUILD_VECTOR]](<5 x s32>) 81*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT bfloat 0xR0000 82*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<5 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16) 83*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[SHUF:%[0-9]+]]:_(<5 x s16>) = G_SHUFFLE_VECTOR [[TRUNC]](<5 x s16>), [[BUILD_VECTOR1]], shufflemask(3, 1, 2, 0, 4) 84*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16), [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16), [[UV10:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[SHUF]](<5 x s16>) 85*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s16) 86*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[UV7]](s16) 87*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[UV8]](s16) 88*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT6]](s32) 89*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT7]](s32) 90*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr2 = COPY [[ANYEXT8]](s32) 91*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2 92*4b0a76a3SPierre van Houtryve %res = shufflevector <5 x bfloat> %arg0, <5 x bfloat> zeroinitializer, <5 x i32> <i32 3, i32 1, i32 2, i32 0, i32 4> 93*4b0a76a3SPierre van Houtryve ret <5 x bfloat> %res 94*4b0a76a3SPierre van Houtryve} 95*4b0a76a3SPierre van Houtryve 96*4b0a76a3SPierre van Houtryvedefine <6 x bfloat> @v6bf16(<6 x bfloat> %arg0) { 97*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v6bf16 98*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 99*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2 100*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 101*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 102*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 103*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 104*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 105*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 106*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 107*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 108*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 109*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 110*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](s32) 111*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 112*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 113*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32), [[ANYEXT4]](s32), [[ANYEXT5]](s32) 114*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<6 x s16>) = G_TRUNC [[BUILD_VECTOR]](<6 x s32>) 115*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT bfloat 0xR0000 116*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<6 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16) 117*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[SHUF:%[0-9]+]]:_(<6 x s16>) = G_SHUFFLE_VECTOR [[TRUNC]](<6 x s16>), [[BUILD_VECTOR1]], shufflemask(3, 1, 2, 0, 4, 5) 118*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16), [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16), [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[SHUF]](<6 x s16>) 119*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s16) 120*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[UV7]](s16) 121*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[UV8]](s16) 122*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT6]](s32) 123*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT7]](s32) 124*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr2 = COPY [[ANYEXT8]](s32) 125*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2 126*4b0a76a3SPierre van Houtryve %res = shufflevector <6 x bfloat> %arg0, <6 x bfloat> zeroinitializer, <6 x i32> <i32 3, i32 1, i32 2, i32 0, i32 4, i32 5> 127*4b0a76a3SPierre van Houtryve ret <6 x bfloat> %res 128*4b0a76a3SPierre van Houtryve} 129*4b0a76a3SPierre van Houtryve 130*4b0a76a3SPierre van Houtryvedefine <7 x bfloat> @v7bf16(<7 x bfloat> %arg0) { 131*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v7bf16 132*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 133*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 134*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 135*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 136*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 137*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 138*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 139*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 140*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 141*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 142*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 143*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 144*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 145*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](s32) 146*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 147*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 148*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY3]](s32) 149*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s16) 150*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[UV7]](s16) 151*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<7 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32), [[ANYEXT4]](s32), [[ANYEXT5]](s32), [[ANYEXT6]](s32) 152*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<7 x s16>) = G_TRUNC [[BUILD_VECTOR]](<7 x s32>) 153*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT bfloat 0xR0000 154*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<7 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16) 155*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[SHUF:%[0-9]+]]:_(<7 x s16>) = G_SHUFFLE_VECTOR [[TRUNC]](<7 x s16>), [[BUILD_VECTOR1]], shufflemask(3, 1, 2, 0, 4, 5, 6) 156*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16), [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16), [[UV12:%[0-9]+]]:_(s16), [[UV13:%[0-9]+]]:_(s16), [[UV14:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[SHUF]](<7 x s16>) 157*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[UV8]](s16) 158*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT9:%[0-9]+]]:_(s32) = G_ANYEXT [[UV9]](s16) 159*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT10:%[0-9]+]]:_(s32) = G_ANYEXT [[UV10]](s16) 160*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT11:%[0-9]+]]:_(s32) = G_ANYEXT [[UV11]](s16) 161*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT8]](s32) 162*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT9]](s32) 163*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr2 = COPY [[ANYEXT10]](s32) 164*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr3 = COPY [[ANYEXT11]](s32) 165*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3 166*4b0a76a3SPierre van Houtryve %res = shufflevector <7 x bfloat> %arg0, <7 x bfloat> zeroinitializer, <7 x i32> <i32 3, i32 1, i32 2, i32 0, i32 4, i32 5, i32 6> 167*4b0a76a3SPierre van Houtryve ret <7 x bfloat> %res 168*4b0a76a3SPierre van Houtryve} 169*4b0a76a3SPierre van Houtryve 170*4b0a76a3SPierre van Houtryvedefine <8 x bfloat> @v8bf16(<8 x bfloat> %arg0) { 171*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v8bf16 172*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 173*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 174*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 175*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 176*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 177*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 178*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 179*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 180*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 181*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 182*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 183*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 184*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 185*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](s32) 186*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 187*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 188*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY3]](s32) 189*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s16) 190*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[UV7]](s16) 191*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32), [[ANYEXT4]](s32), [[ANYEXT5]](s32), [[ANYEXT6]](s32), [[ANYEXT7]](s32) 192*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<8 x s16>) = G_TRUNC [[BUILD_VECTOR]](<8 x s32>) 193*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT bfloat 0xR0000 194*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16), [[C]](s16) 195*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[SHUF:%[0-9]+]]:_(<8 x s16>) = G_SHUFFLE_VECTOR [[TRUNC]](<8 x s16>), [[BUILD_VECTOR1]], shufflemask(3, 1, 2, 0, 4, 5, 6, 7) 196*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16), [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16), [[UV12:%[0-9]+]]:_(s16), [[UV13:%[0-9]+]]:_(s16), [[UV14:%[0-9]+]]:_(s16), [[UV15:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[SHUF]](<8 x s16>) 197*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[UV8]](s16) 198*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT9:%[0-9]+]]:_(s32) = G_ANYEXT [[UV9]](s16) 199*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT10:%[0-9]+]]:_(s32) = G_ANYEXT [[UV10]](s16) 200*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT11:%[0-9]+]]:_(s32) = G_ANYEXT [[UV11]](s16) 201*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT8]](s32) 202*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT9]](s32) 203*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr2 = COPY [[ANYEXT10]](s32) 204*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr3 = COPY [[ANYEXT11]](s32) 205*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3 206*4b0a76a3SPierre van Houtryve %res = shufflevector <8 x bfloat> %arg0, <8 x bfloat> zeroinitializer, <8 x i32> <i32 3, i32 1, i32 2, i32 0, i32 4, i32 5, i32 6, i32 7> 207*4b0a76a3SPierre van Houtryve ret <8 x bfloat> %res 208*4b0a76a3SPierre van Houtryve} 209*4b0a76a3SPierre van Houtryve 210*4b0a76a3SPierre van Houtryvedefine <16 x bfloat> @v16bf16(<16 x bfloat> %arg0) { 211*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v16bf16 212*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 213*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7 214*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 215*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 216*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 217*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 218*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 219*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 220*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 221*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 222*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 223*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 224*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 225*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 226*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 227*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 228*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 229*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](s32) 230*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 231*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 232*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY3]](s32) 233*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s16) 234*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[UV7]](s16) 235*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY4]](s32) 236*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[UV8]](s16) 237*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT9:%[0-9]+]]:_(s32) = G_ANYEXT [[UV9]](s16) 238*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY5]](s32) 239*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT10:%[0-9]+]]:_(s32) = G_ANYEXT [[UV10]](s16) 240*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT11:%[0-9]+]]:_(s32) = G_ANYEXT [[UV11]](s16) 241*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV12:%[0-9]+]]:_(s16), [[UV13:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY6]](s32) 242*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT12:%[0-9]+]]:_(s32) = G_ANYEXT [[UV12]](s16) 243*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT13:%[0-9]+]]:_(s32) = G_ANYEXT [[UV13]](s16) 244*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV14:%[0-9]+]]:_(s16), [[UV15:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY7]](s32) 245*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT14:%[0-9]+]]:_(s32) = G_ANYEXT [[UV14]](s16) 246*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT15:%[0-9]+]]:_(s32) = G_ANYEXT [[UV15]](s16) 247*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32), [[ANYEXT4]](s32), [[ANYEXT5]](s32), [[ANYEXT6]](s32), [[ANYEXT7]](s32), [[ANYEXT8]](s32), [[ANYEXT9]](s32), [[ANYEXT10]](s32), [[ANYEXT11]](s32), [[ANYEXT12]](s32), [[ANYEXT13]](s32), [[ANYEXT14]](s32), [[ANYEXT15]](s32) 248*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<16 x s16>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>) 249*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV16:%[0-9]+]]:_(s16), [[UV17:%[0-9]+]]:_(s16), [[UV18:%[0-9]+]]:_(s16), [[UV19:%[0-9]+]]:_(s16), [[UV20:%[0-9]+]]:_(s16), [[UV21:%[0-9]+]]:_(s16), [[UV22:%[0-9]+]]:_(s16), [[UV23:%[0-9]+]]:_(s16), [[UV24:%[0-9]+]]:_(s16), [[UV25:%[0-9]+]]:_(s16), [[UV26:%[0-9]+]]:_(s16), [[UV27:%[0-9]+]]:_(s16), [[UV28:%[0-9]+]]:_(s16), [[UV29:%[0-9]+]]:_(s16), [[UV30:%[0-9]+]]:_(s16), [[UV31:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[TRUNC]](<16 x s16>) 250*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT16:%[0-9]+]]:_(s32) = G_ANYEXT [[UV16]](s16) 251*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT17:%[0-9]+]]:_(s32) = G_ANYEXT [[UV17]](s16) 252*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT18:%[0-9]+]]:_(s32) = G_ANYEXT [[UV18]](s16) 253*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT19:%[0-9]+]]:_(s32) = G_ANYEXT [[UV19]](s16) 254*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT20:%[0-9]+]]:_(s32) = G_ANYEXT [[UV20]](s16) 255*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT21:%[0-9]+]]:_(s32) = G_ANYEXT [[UV21]](s16) 256*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT22:%[0-9]+]]:_(s32) = G_ANYEXT [[UV22]](s16) 257*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT23:%[0-9]+]]:_(s32) = G_ANYEXT [[UV23]](s16) 258*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT16]](s32) 259*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT17]](s32) 260*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr2 = COPY [[ANYEXT18]](s32) 261*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr3 = COPY [[ANYEXT19]](s32) 262*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr4 = COPY [[ANYEXT20]](s32) 263*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr5 = COPY [[ANYEXT21]](s32) 264*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr6 = COPY [[ANYEXT22]](s32) 265*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr7 = COPY [[ANYEXT23]](s32) 266*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7 267*4b0a76a3SPierre van Houtryve ret <16 x bfloat> %arg0 268*4b0a76a3SPierre van Houtryve} 269*4b0a76a3SPierre van Houtryve 270*4b0a76a3SPierre van Houtryvedefine <32 x bfloat> @v32bf16(<32 x bfloat> %arg0) { 271*4b0a76a3SPierre van Houtryve ; GFX9-LABEL: name: v32bf16 272*4b0a76a3SPierre van Houtryve ; GFX9: bb.1 (%ir-block.0): 273*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15 274*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: {{ $}} 275*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 276*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 277*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 278*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 279*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 280*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 281*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 282*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 283*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 284*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 285*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 286*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 287*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 288*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 289*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 290*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 291*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](s32) 292*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16) 293*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16) 294*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](s32) 295*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16) 296*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16) 297*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](s32) 298*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16) 299*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16) 300*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY3]](s32) 301*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s16) 302*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[UV7]](s16) 303*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY4]](s32) 304*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[UV8]](s16) 305*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT9:%[0-9]+]]:_(s32) = G_ANYEXT [[UV9]](s16) 306*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY5]](s32) 307*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT10:%[0-9]+]]:_(s32) = G_ANYEXT [[UV10]](s16) 308*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT11:%[0-9]+]]:_(s32) = G_ANYEXT [[UV11]](s16) 309*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV12:%[0-9]+]]:_(s16), [[UV13:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY6]](s32) 310*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT12:%[0-9]+]]:_(s32) = G_ANYEXT [[UV12]](s16) 311*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT13:%[0-9]+]]:_(s32) = G_ANYEXT [[UV13]](s16) 312*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV14:%[0-9]+]]:_(s16), [[UV15:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY7]](s32) 313*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT14:%[0-9]+]]:_(s32) = G_ANYEXT [[UV14]](s16) 314*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT15:%[0-9]+]]:_(s32) = G_ANYEXT [[UV15]](s16) 315*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV16:%[0-9]+]]:_(s16), [[UV17:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY8]](s32) 316*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT16:%[0-9]+]]:_(s32) = G_ANYEXT [[UV16]](s16) 317*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT17:%[0-9]+]]:_(s32) = G_ANYEXT [[UV17]](s16) 318*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV18:%[0-9]+]]:_(s16), [[UV19:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY9]](s32) 319*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT18:%[0-9]+]]:_(s32) = G_ANYEXT [[UV18]](s16) 320*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT19:%[0-9]+]]:_(s32) = G_ANYEXT [[UV19]](s16) 321*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV20:%[0-9]+]]:_(s16), [[UV21:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY10]](s32) 322*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT20:%[0-9]+]]:_(s32) = G_ANYEXT [[UV20]](s16) 323*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT21:%[0-9]+]]:_(s32) = G_ANYEXT [[UV21]](s16) 324*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV22:%[0-9]+]]:_(s16), [[UV23:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY11]](s32) 325*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT22:%[0-9]+]]:_(s32) = G_ANYEXT [[UV22]](s16) 326*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT23:%[0-9]+]]:_(s32) = G_ANYEXT [[UV23]](s16) 327*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV24:%[0-9]+]]:_(s16), [[UV25:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY12]](s32) 328*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT24:%[0-9]+]]:_(s32) = G_ANYEXT [[UV24]](s16) 329*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT25:%[0-9]+]]:_(s32) = G_ANYEXT [[UV25]](s16) 330*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV26:%[0-9]+]]:_(s16), [[UV27:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY13]](s32) 331*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT26:%[0-9]+]]:_(s32) = G_ANYEXT [[UV26]](s16) 332*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT27:%[0-9]+]]:_(s32) = G_ANYEXT [[UV27]](s16) 333*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV28:%[0-9]+]]:_(s16), [[UV29:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY14]](s32) 334*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT28:%[0-9]+]]:_(s32) = G_ANYEXT [[UV28]](s16) 335*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT29:%[0-9]+]]:_(s32) = G_ANYEXT [[UV29]](s16) 336*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV30:%[0-9]+]]:_(s16), [[UV31:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY15]](s32) 337*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT30:%[0-9]+]]:_(s32) = G_ANYEXT [[UV30]](s16) 338*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT31:%[0-9]+]]:_(s32) = G_ANYEXT [[UV31]](s16) 339*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[ANYEXT3]](s32), [[ANYEXT4]](s32), [[ANYEXT5]](s32), [[ANYEXT6]](s32), [[ANYEXT7]](s32), [[ANYEXT8]](s32), [[ANYEXT9]](s32), [[ANYEXT10]](s32), [[ANYEXT11]](s32), [[ANYEXT12]](s32), [[ANYEXT13]](s32), [[ANYEXT14]](s32), [[ANYEXT15]](s32), [[ANYEXT16]](s32), [[ANYEXT17]](s32), [[ANYEXT18]](s32), [[ANYEXT19]](s32), [[ANYEXT20]](s32), [[ANYEXT21]](s32), [[ANYEXT22]](s32), [[ANYEXT23]](s32), [[ANYEXT24]](s32), [[ANYEXT25]](s32), [[ANYEXT26]](s32), [[ANYEXT27]](s32), [[ANYEXT28]](s32), [[ANYEXT29]](s32), [[ANYEXT30]](s32), [[ANYEXT31]](s32) 340*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(<32 x s16>) = G_TRUNC [[BUILD_VECTOR]](<32 x s32>) 341*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[UV32:%[0-9]+]]:_(s16), [[UV33:%[0-9]+]]:_(s16), [[UV34:%[0-9]+]]:_(s16), [[UV35:%[0-9]+]]:_(s16), [[UV36:%[0-9]+]]:_(s16), [[UV37:%[0-9]+]]:_(s16), [[UV38:%[0-9]+]]:_(s16), [[UV39:%[0-9]+]]:_(s16), [[UV40:%[0-9]+]]:_(s16), [[UV41:%[0-9]+]]:_(s16), [[UV42:%[0-9]+]]:_(s16), [[UV43:%[0-9]+]]:_(s16), [[UV44:%[0-9]+]]:_(s16), [[UV45:%[0-9]+]]:_(s16), [[UV46:%[0-9]+]]:_(s16), [[UV47:%[0-9]+]]:_(s16), [[UV48:%[0-9]+]]:_(s16), [[UV49:%[0-9]+]]:_(s16), [[UV50:%[0-9]+]]:_(s16), [[UV51:%[0-9]+]]:_(s16), [[UV52:%[0-9]+]]:_(s16), [[UV53:%[0-9]+]]:_(s16), [[UV54:%[0-9]+]]:_(s16), [[UV55:%[0-9]+]]:_(s16), [[UV56:%[0-9]+]]:_(s16), [[UV57:%[0-9]+]]:_(s16), [[UV58:%[0-9]+]]:_(s16), [[UV59:%[0-9]+]]:_(s16), [[UV60:%[0-9]+]]:_(s16), [[UV61:%[0-9]+]]:_(s16), [[UV62:%[0-9]+]]:_(s16), [[UV63:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[TRUNC]](<32 x s16>) 342*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT32:%[0-9]+]]:_(s32) = G_ANYEXT [[UV32]](s16) 343*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT33:%[0-9]+]]:_(s32) = G_ANYEXT [[UV33]](s16) 344*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT34:%[0-9]+]]:_(s32) = G_ANYEXT [[UV34]](s16) 345*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT35:%[0-9]+]]:_(s32) = G_ANYEXT [[UV35]](s16) 346*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT36:%[0-9]+]]:_(s32) = G_ANYEXT [[UV36]](s16) 347*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT37:%[0-9]+]]:_(s32) = G_ANYEXT [[UV37]](s16) 348*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT38:%[0-9]+]]:_(s32) = G_ANYEXT [[UV38]](s16) 349*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT39:%[0-9]+]]:_(s32) = G_ANYEXT [[UV39]](s16) 350*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT40:%[0-9]+]]:_(s32) = G_ANYEXT [[UV40]](s16) 351*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT41:%[0-9]+]]:_(s32) = G_ANYEXT [[UV41]](s16) 352*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT42:%[0-9]+]]:_(s32) = G_ANYEXT [[UV42]](s16) 353*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT43:%[0-9]+]]:_(s32) = G_ANYEXT [[UV43]](s16) 354*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT44:%[0-9]+]]:_(s32) = G_ANYEXT [[UV44]](s16) 355*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT45:%[0-9]+]]:_(s32) = G_ANYEXT [[UV45]](s16) 356*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT46:%[0-9]+]]:_(s32) = G_ANYEXT [[UV46]](s16) 357*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: [[ANYEXT47:%[0-9]+]]:_(s32) = G_ANYEXT [[UV47]](s16) 358*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT32]](s32) 359*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr1 = COPY [[ANYEXT33]](s32) 360*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr2 = COPY [[ANYEXT34]](s32) 361*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr3 = COPY [[ANYEXT35]](s32) 362*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr4 = COPY [[ANYEXT36]](s32) 363*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr5 = COPY [[ANYEXT37]](s32) 364*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr6 = COPY [[ANYEXT38]](s32) 365*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr7 = COPY [[ANYEXT39]](s32) 366*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr8 = COPY [[ANYEXT40]](s32) 367*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr9 = COPY [[ANYEXT41]](s32) 368*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr10 = COPY [[ANYEXT42]](s32) 369*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr11 = COPY [[ANYEXT43]](s32) 370*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr12 = COPY [[ANYEXT44]](s32) 371*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr13 = COPY [[ANYEXT45]](s32) 372*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr14 = COPY [[ANYEXT46]](s32) 373*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: $vgpr15 = COPY [[ANYEXT47]](s32) 374*4b0a76a3SPierre van Houtryve ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15 375*4b0a76a3SPierre van Houtryve ret <32 x bfloat> %arg0 376*4b0a76a3SPierre van Houtryve} 377