1; RUN: llc -march=amdgcn -mtriple=amdgcn-- -verify-machineinstrs -o - %s | FileCheck %s 2 3; CHECK-LABEL: foo 4; CHECK: buffer_load_ushort 5; CHECK: buffer_load_ushort 6; CHECK: buffer_load_ushort 7; CHECK: buffer_load_ushort 8; CHECK: buffer_load_ushort 9; CHECK: buffer_load_ushort 10; CHECK: buffer_load_ushort 11; CHECK: buffer_load_ushort 12; CHECK: buffer_load_ushort 13; CHECK: buffer_load_ushort 14; CHECK: buffer_load_ushort 15; CHECK: buffer_load_ushort 16; CHECK: buffer_load_ushort 17; CHECK: buffer_load_ushort 18; CHECK: buffer_load_ushort 19; CHECK: buffer_load_ushort 20; CHECK: v_bfe_i32 21; CHECK: v_bfe_i32 22 23define <2 x i16> @foo(<8 x i16> addrspace(1) * %p0, <8 x i16> addrspace(1) * %p1) { 24 br i1 undef, label %T, label %F 25 26T: 27 %t = load volatile <8 x i16>, <8 x i16> addrspace(1) * %p0 28 br label %exit 29 30F: 31 %f = load volatile <8 x i16>, <8 x i16> addrspace(1) * %p1 32 br label %exit 33 34exit: 35 %m = phi <8 x i16> [ %t, %T ], [ %f, %F ] 36 %v2 = shufflevector <8 x i16> %m, <8 x i16> undef, <2 x i32> <i32 0, i32 1> 37 %b2 = icmp sgt <2 x i16> %v2, <i16 -1, i16 -1> 38 %r2 = select <2 x i1> %b2, <2 x i16> <i16 -32768, i16 -32768>, <2 x i16> <i16 -1, i16 -1> 39 ret <2 x i16> %r2 40} 41