1f496bd9aSJonas Paulsson; Test that a vector select with a logic combination of two compares do not 2f496bd9aSJonas Paulsson; produce any unnecessary pack, unpack or shift instructions. 3f496bd9aSJonas Paulsson; And, Or and Xor are tested. 4f496bd9aSJonas Paulsson; 5f496bd9aSJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 6c63ed222SJonas Paulsson; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s -check-prefix=CHECK-Z14 7f496bd9aSJonas Paulsson 8f496bd9aSJonas Paulssondefine <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) { 9f496bd9aSJonas Paulsson; CHECK-LABEL: fun0: 1025528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 11c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26 12c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v28, %v30 13c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]] 14f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 15f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 16f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i8> %val1, %val2 17f496bd9aSJonas Paulsson %cmp1 = icmp eq <2 x i8> %val3, %val4 18f496bd9aSJonas Paulsson %and = and <2 x i1> %cmp0, %cmp1 19f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 20f496bd9aSJonas Paulsson ret <2 x i8> %sel 21f496bd9aSJonas Paulsson} 22f496bd9aSJonas Paulsson 23f496bd9aSJonas Paulssondefine <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) { 24f496bd9aSJonas Paulsson; CHECK-LABEL: fun1: 2525528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 26c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26 27c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v28, %v30 28c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]] 29f496bd9aSJonas Paulsson; CHECK-NEXT: vuphb %v0, %v0 30f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 31f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 32f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i8> %val1, %val2 33f496bd9aSJonas Paulsson %cmp1 = icmp eq <2 x i8> %val3, %val4 34f496bd9aSJonas Paulsson %and = and <2 x i1> %cmp0, %cmp1 35f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 36f496bd9aSJonas Paulsson ret <2 x i16> %sel 37f496bd9aSJonas Paulsson} 38f496bd9aSJonas Paulsson 39c63ed222SJonas Paulssondefine <16 x i8> @fun2(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) { 40f496bd9aSJonas Paulsson; CHECK-LABEL: fun2: 4125528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 42c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v30, %v27 43c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v25 44c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG2:%v[0-9]+]], %v24, %v26 45c63ed222SJonas Paulsson; CHECK-DAG: vpkh [[REG3:%v[0-9]+]], [[REG1]], [[REG0]] 46c63ed222SJonas Paulsson; CHECK-NEXT: vo %v0, [[REG2]], [[REG3]] 47c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 48f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 49c63ed222SJonas Paulsson %cmp0 = icmp eq <16 x i8> %val1, %val2 50c63ed222SJonas Paulsson %cmp1 = icmp eq <16 x i16> %val3, %val4 51c63ed222SJonas Paulsson %and = or <16 x i1> %cmp0, %cmp1 52c63ed222SJonas Paulsson %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 53c63ed222SJonas Paulsson ret <16 x i8> %sel 54f496bd9aSJonas Paulsson} 55f496bd9aSJonas Paulsson 56c63ed222SJonas Paulssondefine <16 x i16> @fun3(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) { 57f496bd9aSJonas Paulsson; CHECK-LABEL: fun3: 5825528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 59c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26 60c63ed222SJonas Paulsson; CHECK-DAG: vuphb [[REG2:%v[0-9]+]], [[REG0]] 61c63ed222SJonas Paulsson; CHECK-DAG: vmrlg [[REG1:%v[0-9]+]], [[REG0]], [[REG0]] 62c63ed222SJonas Paulsson; CHECK-DAG: vuphb [[REG1]], [[REG1]] 63c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG3:%v[0-9]+]], %v28, %v25 64c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG4:%v[0-9]+]], %v30, %v27 65c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15) 66c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG6:%v[0-9]+]], 160(%r15) 67c63ed222SJonas Paulsson; CHECK-DAG: vo [[REG7:%v[0-9]+]], %v2, [[REG4]] 68c63ed222SJonas Paulsson; CHECK-DAG: vo [[REG8:%v[0-9]+]], [[REG2]], [[REG3]] 69c63ed222SJonas Paulsson; CHECK-DAG: vsel %v24, %v29, [[REG6]], [[REG8]] 70c63ed222SJonas Paulsson; CHECK-DAG: vsel %v26, %v31, [[REG5]], [[REG7]] 71f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 72c63ed222SJonas Paulsson %cmp0 = icmp eq <16 x i8> %val1, %val2 73c63ed222SJonas Paulsson %cmp1 = icmp eq <16 x i16> %val3, %val4 74c63ed222SJonas Paulsson %and = or <16 x i1> %cmp0, %cmp1 75c63ed222SJonas Paulsson %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 76c63ed222SJonas Paulsson ret <16 x i16> %sel 77f496bd9aSJonas Paulsson} 78f496bd9aSJonas Paulsson 79c63ed222SJonas Paulssondefine <32 x i8> @fun4(<32 x i8> %val1, <32 x i8> %val2, <32 x i8> %val3, <32 x i8> %val4, <32 x i8> %val5, <32 x i8> %val6) { 80f496bd9aSJonas Paulsson; CHECK-LABEL: fun4: 8125528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 82c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v28 83c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v26, %v30 84c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG2:%v[0-9]+]], %v25, %v29 85c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG3:%v[0-9]+]], %v27, %v31 86c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG4:%v[0-9]+]], 208(%r15) 87c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15) 88c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG6:%v[0-9]+]], 192(%r15) 89c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15) 90c63ed222SJonas Paulsson; CHECK-DAG: vx [[REG8:%v[0-9]+]], [[REG1]], [[REG3]] 91c63ed222SJonas Paulsson; CHECK-DAG: vx [[REG9:%v[0-9]+]], [[REG0]], [[REG2]] 92c63ed222SJonas Paulsson; CHECK-DAG: vsel %v24, [[REG7]], [[REG6]], [[REG9]] 93c63ed222SJonas Paulsson; CHECK-DAG: vsel %v26, [[REG5]], [[REG4]], [[REG8]] 94f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 95c63ed222SJonas Paulsson %cmp0 = icmp eq <32 x i8> %val1, %val2 96c63ed222SJonas Paulsson %cmp1 = icmp eq <32 x i8> %val3, %val4 97c63ed222SJonas Paulsson %and = xor <32 x i1> %cmp0, %cmp1 98c63ed222SJonas Paulsson %sel = select <32 x i1> %and, <32 x i8> %val5, <32 x i8> %val6 99c63ed222SJonas Paulsson ret <32 x i8> %sel 100f496bd9aSJonas Paulsson} 101f496bd9aSJonas Paulsson 102c63ed222SJonas Paulssondefine <2 x i8> @fun5(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) { 103f496bd9aSJonas Paulsson; CHECK-LABEL: fun5: 10425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 105c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26 106c63ed222SJonas Paulsson; CHECK-DAG: vpkh [[REG1:%v[0-9]+]], [[REG0]], [[REG0]] 107c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG2:%v[0-9]+]], %v28, %v30 108c63ed222SJonas Paulsson; CHECK-DAG: vo %v0, [[REG1]], [[REG2]] 109c63ed222SJonas Paulsson; CHECK-DAG: vsel %v24, %v25, %v27, %v0 110f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 111f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i16> %val1, %val2 112c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i8> %val3, %val4 113c63ed222SJonas Paulsson %and = or <2 x i1> %cmp0, %cmp1 114f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 115f496bd9aSJonas Paulsson ret <2 x i8> %sel 116f496bd9aSJonas Paulsson} 117f496bd9aSJonas Paulsson 118c63ed222SJonas Paulssondefine <2 x i16> @fun6(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) { 119c63ed222SJonas Paulsson; CHECK-LABEL: fun6: 12025528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 121c63ed222SJonas Paulsson; CHECK-NEXT: vceqb %v1, %v28, %v30 122c63ed222SJonas Paulsson; CHECK-NEXT: vceqh %v0, %v24, %v26 123c63ed222SJonas Paulsson; CHECK-NEXT: vuphb %v1, %v1 124c63ed222SJonas Paulsson; CHECK-NEXT: vo %v0, %v0, %v1 125f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 126f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 127f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i16> %val1, %val2 128c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i8> %val3, %val4 129c63ed222SJonas Paulsson %and = or <2 x i1> %cmp0, %cmp1 130f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 131f496bd9aSJonas Paulsson ret <2 x i16> %sel 132f496bd9aSJonas Paulsson} 133f496bd9aSJonas Paulsson 134c63ed222SJonas Paulssondefine <2 x i32> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i32> %val5, <2 x i32> %val6) { 135c63ed222SJonas Paulsson; CHECK-LABEL: fun7: 13625528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 137c63ed222SJonas Paulsson; CHECK-NEXT: vceqb %v1, %v28, %v30 138c63ed222SJonas Paulsson; CHECK-NEXT: vceqh %v0, %v24, %v26 139c63ed222SJonas Paulsson; CHECK-NEXT: vuphb %v1, %v1 140c63ed222SJonas Paulsson; CHECK-NEXT: vo %v0, %v0, %v1 141f496bd9aSJonas Paulsson; CHECK-NEXT: vuphh %v0, %v0 142f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 143f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 144f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i16> %val1, %val2 145c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i8> %val3, %val4 146c63ed222SJonas Paulsson %and = or <2 x i1> %cmp0, %cmp1 147f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 148f496bd9aSJonas Paulsson ret <2 x i32> %sel 149f496bd9aSJonas Paulsson} 150f496bd9aSJonas Paulsson 151c63ed222SJonas Paulssondefine <8 x i8> @fun8(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) { 152c63ed222SJonas Paulsson; CHECK-LABEL: fun8: 15325528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 154c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26 155c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30 156c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]] 157c63ed222SJonas Paulsson; CHECK-NEXT: vpkh %v0, %v0, %v0 158c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 159c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 160c63ed222SJonas Paulsson %cmp0 = icmp eq <8 x i16> %val1, %val2 161c63ed222SJonas Paulsson %cmp1 = icmp eq <8 x i16> %val3, %val4 162c63ed222SJonas Paulsson %and = xor <8 x i1> %cmp0, %cmp1 163c63ed222SJonas Paulsson %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 164c63ed222SJonas Paulsson ret <8 x i8> %sel 165c63ed222SJonas Paulsson} 166c63ed222SJonas Paulsson 167c63ed222SJonas Paulssondefine <8 x i16> @fun9(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) { 168c63ed222SJonas Paulsson; CHECK-LABEL: fun9: 16925528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 170c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26 171c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30 172c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]] 173c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 174c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 175c63ed222SJonas Paulsson %cmp0 = icmp eq <8 x i16> %val1, %val2 176c63ed222SJonas Paulsson %cmp1 = icmp eq <8 x i16> %val3, %val4 177c63ed222SJonas Paulsson %and = xor <8 x i1> %cmp0, %cmp1 178c63ed222SJonas Paulsson %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 179c63ed222SJonas Paulsson ret <8 x i16> %sel 180c63ed222SJonas Paulsson} 181c63ed222SJonas Paulsson 182c63ed222SJonas Paulssondefine <8 x i32> @fun10(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) { 183f496bd9aSJonas Paulsson; CHECK-LABEL: fun10: 18425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 185c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26 186c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30 187c63ed222SJonas Paulsson; CHECK-NEXT: vx [[REG2:%v[0-9]+]], [[REG0]], [[REG1]] 188c63ed222SJonas Paulsson; CHECK-DAG: vuphh [[REG3:%v[0-9]+]], [[REG2]] 189c63ed222SJonas Paulsson; CHECK-DAG: vmrlg [[REG4:%v[0-9]+]], [[REG2]], [[REG2]] 190c63ed222SJonas Paulsson; CHECK-DAG: vuphh [[REG5:%v[0-9]+]], [[REG4]] 191c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG3]] 192c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG5]] 193f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 194c63ed222SJonas Paulsson %cmp0 = icmp eq <8 x i16> %val1, %val2 195c63ed222SJonas Paulsson %cmp1 = icmp eq <8 x i16> %val3, %val4 196c63ed222SJonas Paulsson %and = xor <8 x i1> %cmp0, %cmp1 197c63ed222SJonas Paulsson %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 198c63ed222SJonas Paulsson ret <8 x i32> %sel 199f496bd9aSJonas Paulsson} 200f496bd9aSJonas Paulsson 201c63ed222SJonas Paulssondefine <16 x i8> @fun11(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) { 202f496bd9aSJonas Paulsson; CHECK-LABEL: fun11: 20325528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 204c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG0:%v[0-9]+]], 192(%r15) 205c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG1:%v[0-9]+]], 208(%r15) 206c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG2:%v[0-9]+]], 160(%r15) 207c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG3:%v[0-9]+]], 176(%r15) 208c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG4:%v[0-9]+]], %v27, [[REG3]] 209c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG5:%v[0-9]+]], %v25, [[REG2]] 210c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG6:%v[0-9]+]], %v31, [[REG1]] 211c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG7:%v[0-9]+]], %v29, [[REG0]] 212c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG8:%v[0-9]+]], %v24, %v28 213c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG9:%v[0-9]+]], %v26, %v30 214c63ed222SJonas Paulsson; CHECK-DAG: vpkf [[REG10:%v[0-9]+]], [[REG5]], [[REG4]] 215c63ed222SJonas Paulsson; CHECK-DAG: vpkf [[REG11:%v[0-9]+]], [[REG7]], [[REG6]] 216c63ed222SJonas Paulsson; CHECK-DAG: vn [[REG12:%v[0-9]+]], [[REG9]], [[REG11]] 217c63ed222SJonas Paulsson; CHECK-DAG: vn [[REG13:%v[0-9]+]], [[REG8]], [[REG10]] 218c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG14:%v[0-9]+]], 240(%r15) 219c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG15:%v[0-9]+]], 224(%r15) 220c63ed222SJonas Paulsson; CHECK-DAG: vpkh [[REG16:%v[0-9]+]], [[REG13]], [[REG12]] 221c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, [[REG15]], [[REG14]], [[REG16]] 222f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 223c63ed222SJonas Paulsson %cmp0 = icmp eq <16 x i16> %val1, %val2 224c63ed222SJonas Paulsson %cmp1 = icmp eq <16 x i32> %val3, %val4 225c63ed222SJonas Paulsson %and = and <16 x i1> %cmp0, %cmp1 226c63ed222SJonas Paulsson %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 227c63ed222SJonas Paulsson ret <16 x i8> %sel 228f496bd9aSJonas Paulsson} 229f496bd9aSJonas Paulsson 230c63ed222SJonas Paulssondefine <16 x i16> @fun12(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i16> %val5, <16 x i16> %val6) { 231f496bd9aSJonas Paulsson; CHECK-LABEL: fun12: 23225528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 233c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG0:%v[0-9]+]], 192(%r15) 234c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG1:%v[0-9]+]], 208(%r15) 235c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG2:%v[0-9]+]], 160(%r15) 236c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG3:%v[0-9]+]], 176(%r15) 237c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG4:%v[0-9]+]], %v27, [[REG3]] 238c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG5:%v[0-9]+]], %v25, [[REG2]] 239c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG6:%v[0-9]+]], %v31, [[REG1]] 240c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG7:%v[0-9]+]], %v29, [[REG0]] 241c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG8:%v[0-9]+]], %v24, %v28 242c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG9:%v[0-9]+]], %v26, %v30 243c63ed222SJonas Paulsson; CHECK-DAG: vpkf [[REG10:%v[0-9]+]], [[REG5]], [[REG4]] 244c63ed222SJonas Paulsson; CHECK-DAG: vpkf [[REG11:%v[0-9]+]], [[REG7]], [[REG6]] 245c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG12:%v[0-9]+]], 272(%r15) 246c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG13:%v[0-9]+]], 240(%r15) 247c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG14:%v[0-9]+]], 256(%r15) 248c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG15:%v[0-9]+]], 224(%r15) 249c63ed222SJonas Paulsson; CHECK-DAG: vn [[REG16:%v[0-9]+]], [[REG9]], [[REG11]] 250c63ed222SJonas Paulsson; CHECK-DAG: vn [[REG17:%v[0-9]+]], [[REG8]], [[REG10]] 251c63ed222SJonas Paulsson; CHECK-DAG: vsel %v24, [[REG15]], [[REG14]], [[REG17]] 252c63ed222SJonas Paulsson; CHECK-DAG: vsel %v26, [[REG13]], [[REG12]], [[REG16]] 253f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 254c63ed222SJonas Paulsson %cmp0 = icmp eq <16 x i16> %val1, %val2 255c63ed222SJonas Paulsson %cmp1 = icmp eq <16 x i32> %val3, %val4 256c63ed222SJonas Paulsson %and = and <16 x i1> %cmp0, %cmp1 257c63ed222SJonas Paulsson %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 258c63ed222SJonas Paulsson ret <16 x i16> %sel 259f496bd9aSJonas Paulsson} 260f496bd9aSJonas Paulsson 261c63ed222SJonas Paulssondefine <2 x i16> @fun13(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) { 262f496bd9aSJonas Paulsson; CHECK-LABEL: fun13: 26325528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 264c63ed222SJonas Paulsson; CHECK-NEXT: vceqg %v1, %v28, %v30 265c63ed222SJonas Paulsson; CHECK-NEXT: vceqf %v0, %v24, %v26 266c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v1, %v1, %v1 267c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, %v0, %v1 268f496bd9aSJonas Paulsson; CHECK-NEXT: vpkf %v0, %v0, %v0 269f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 270f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 271f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i32> %val1, %val2 272c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i64> %val3, %val4 273c63ed222SJonas Paulsson %and = xor <2 x i1> %cmp0, %cmp1 274f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 275f496bd9aSJonas Paulsson ret <2 x i16> %sel 276f496bd9aSJonas Paulsson} 277f496bd9aSJonas Paulsson 278c63ed222SJonas Paulssondefine <2 x i32> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) { 279c63ed222SJonas Paulsson; CHECK-LABEL: fun14: 28025528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 281c63ed222SJonas Paulsson; CHECK-NEXT: vceqg %v1, %v28, %v30 282c63ed222SJonas Paulsson; CHECK-NEXT: vceqf %v0, %v24, %v26 283c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v1, %v1, %v1 284c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, %v0, %v1 285f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 286f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 287f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i32> %val1, %val2 288c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i64> %val3, %val4 289c63ed222SJonas Paulsson %and = xor <2 x i1> %cmp0, %cmp1 290c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 291c63ed222SJonas Paulsson ret <2 x i32> %sel 292c63ed222SJonas Paulsson} 293c63ed222SJonas Paulsson 294c63ed222SJonas Paulssondefine <2 x i64> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 295c63ed222SJonas Paulsson; CHECK-LABEL: fun15: 29625528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 297c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v26 298c63ed222SJonas Paulsson; CHECK-DAG: vuphf [[REG1:%v[0-9]+]], [[REG0]] 299c63ed222SJonas Paulsson; CHECK-DAG: vceqg [[REG2:%v[0-9]+]], %v28, %v30 300c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, [[REG1]], [[REG2]] 301c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 302c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 303c63ed222SJonas Paulsson %cmp0 = icmp eq <2 x i32> %val1, %val2 304c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i64> %val3, %val4 305c63ed222SJonas Paulsson %and = xor <2 x i1> %cmp0, %cmp1 306c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 307c63ed222SJonas Paulsson ret <2 x i64> %sel 308c63ed222SJonas Paulsson} 309c63ed222SJonas Paulsson 310c63ed222SJonas Paulssondefine <4 x i16> @fun16(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4, <4 x i16> %val5, <4 x i16> %val6) { 311c63ed222SJonas Paulsson; CHECK-LABEL: fun16: 31225528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 313c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v26 314c63ed222SJonas Paulsson; CHECK-DAG: vpkf [[REG1:%v[0-9]+]], [[REG0]], [[REG0]] 315c63ed222SJonas Paulsson; CHECK-DAG: vceqh [[REG2:%v[0-9]+]], %v28, %v30 316c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, [[REG1]], [[REG2]] 317c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 318c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 319c63ed222SJonas Paulsson %cmp0 = icmp eq <4 x i32> %val1, %val2 320c63ed222SJonas Paulsson %cmp1 = icmp eq <4 x i16> %val3, %val4 321c63ed222SJonas Paulsson %and = and <4 x i1> %cmp0, %cmp1 322c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 323c63ed222SJonas Paulsson ret <4 x i16> %sel 324c63ed222SJonas Paulsson} 325c63ed222SJonas Paulsson 326c63ed222SJonas Paulssondefine <4 x i32> @fun17(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4, <4 x i32> %val5, <4 x i32> %val6) { 327c63ed222SJonas Paulsson; CHECK-LABEL: fun17: 32825528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 329c63ed222SJonas Paulsson; CHECK-NEXT: vceqh %v1, %v28, %v30 330c63ed222SJonas Paulsson; CHECK-NEXT: vceqf %v0, %v24, %v26 331c63ed222SJonas Paulsson; CHECK-NEXT: vuphh %v1, %v1 332c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, %v0, %v1 333c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 334c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 335c63ed222SJonas Paulsson %cmp0 = icmp eq <4 x i32> %val1, %val2 336c63ed222SJonas Paulsson %cmp1 = icmp eq <4 x i16> %val3, %val4 337c63ed222SJonas Paulsson %and = and <4 x i1> %cmp0, %cmp1 338c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 339c63ed222SJonas Paulsson ret <4 x i32> %sel 340c63ed222SJonas Paulsson} 341c63ed222SJonas Paulsson 342c63ed222SJonas Paulssondefine <4 x i64> @fun18(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4, <4 x i64> %val5, <4 x i64> %val6) { 343c63ed222SJonas Paulsson; CHECK-LABEL: fun18: 34425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 345c63ed222SJonas Paulsson; CHECK-NEXT: vceqh %v1, %v28, %v30 346c63ed222SJonas Paulsson; CHECK-NEXT: vceqf %v0, %v24, %v26 347c63ed222SJonas Paulsson; CHECK-NEXT: vuphh %v1, %v1 348c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, %v0, %v1 349c63ed222SJonas Paulsson; CHECK-DAG: vuphf [[REG0:%v[0-9]+]], %v0 350c63ed222SJonas Paulsson; CHECK-DAG: vmrlg [[REG1:%v[0-9]+]], %v0, %v0 351c63ed222SJonas Paulsson; CHECK-DAG: vuphf [[REG2:%v[0-9]+]], [[REG1]] 352c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG0]] 353c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG2]] 354c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 355c63ed222SJonas Paulsson %cmp0 = icmp eq <4 x i32> %val1, %val2 356c63ed222SJonas Paulsson %cmp1 = icmp eq <4 x i16> %val3, %val4 357c63ed222SJonas Paulsson %and = and <4 x i1> %cmp0, %cmp1 358c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 359c63ed222SJonas Paulsson ret <4 x i64> %sel 360c63ed222SJonas Paulsson} 361c63ed222SJonas Paulsson 362c63ed222SJonas Paulssondefine <8 x i16> @fun19(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i16> %val5, <8 x i16> %val6) { 363c63ed222SJonas Paulsson; CHECK-LABEL: fun19: 36425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 365c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v28 366c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG1:%v[0-9]+]], %v26, %v30 367c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG2:%v[0-9]+]], %v25, %v29 368c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG3:%v[0-9]+]], %v27, %v31 369c63ed222SJonas Paulsson; CHECK-DAG: vo [[REG4:%v[0-9]+]], [[REG1]], [[REG3]] 370c63ed222SJonas Paulsson; CHECK-DAG: vo [[REG5:%v[0-9]+]], [[REG0]], [[REG2]] 371c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG6:%v[0-9]+]], 176(%r15) 372c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15) 373c63ed222SJonas Paulsson; CHECK-DAG: vpkf [[REG8:%v[0-9]+]], [[REG5]], [[REG4]] 374c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, [[REG7]], [[REG6]], [[REG8]] 375c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 376c63ed222SJonas Paulsson %cmp0 = icmp eq <8 x i32> %val1, %val2 377c63ed222SJonas Paulsson %cmp1 = icmp eq <8 x i32> %val3, %val4 378c63ed222SJonas Paulsson %and = or <8 x i1> %cmp0, %cmp1 379c63ed222SJonas Paulsson %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 380c63ed222SJonas Paulsson ret <8 x i16> %sel 381c63ed222SJonas Paulsson} 382c63ed222SJonas Paulsson 383c63ed222SJonas Paulssondefine <8 x i32> @fun20(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i32> %val5, <8 x i32> %val6) { 384c63ed222SJonas Paulsson; CHECK-LABEL: fun20: 38525528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 386c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v28 387c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG1:%v[0-9]+]], %v26, %v30 388c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG2:%v[0-9]+]], %v25, %v29 389c63ed222SJonas Paulsson; CHECK-DAG: vceqf [[REG3:%v[0-9]+]], %v27, %v31 390c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG4:%v[0-9]+]], 208(%r15) 391c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15) 392c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG6:%v[0-9]+]], 192(%r15) 393c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15) 394c63ed222SJonas Paulsson; CHECK-DAG: vo [[REG8:%v[0-9]+]], [[REG1]], [[REG3]] 395c63ed222SJonas Paulsson; CHECK-DAG: vo [[REG9:%v[0-9]+]], [[REG0]], [[REG2]] 396c63ed222SJonas Paulsson; CHECK-DAG: vsel %v24, [[REG7]], [[REG6]], [[REG9]] 397c63ed222SJonas Paulsson; CHECK-DAG: vsel %v26, [[REG5]], [[REG4]], [[REG8]] 398c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 399c63ed222SJonas Paulsson %cmp0 = icmp eq <8 x i32> %val1, %val2 400c63ed222SJonas Paulsson %cmp1 = icmp eq <8 x i32> %val3, %val4 401c63ed222SJonas Paulsson %and = or <8 x i1> %cmp0, %cmp1 402c63ed222SJonas Paulsson %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 403c63ed222SJonas Paulsson ret <8 x i32> %sel 404c63ed222SJonas Paulsson} 405c63ed222SJonas Paulsson 406c63ed222SJonas Paulssondefine <2 x i32> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) { 407c63ed222SJonas Paulsson; CHECK-LABEL: fun21: 40825528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 409c63ed222SJonas Paulsson; CHECK-DAG: vceqg [[REG0:%v[0-9]+]], %v24, %v26 410c63ed222SJonas Paulsson; CHECK-DAG: vceqg [[REG1:%v[0-9]+]], %v28, %v30 411c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]] 412c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v0, %v0, %v0 413c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 414c63ed222SJonas Paulsson; CHECK-NEXT: br %r14 415c63ed222SJonas Paulsson %cmp0 = icmp eq <2 x i64> %val1, %val2 416c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i64> %val3, %val4 417f496bd9aSJonas Paulsson %and = and <2 x i1> %cmp0, %cmp1 418f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 419f496bd9aSJonas Paulsson ret <2 x i32> %sel 420f496bd9aSJonas Paulsson} 421f496bd9aSJonas Paulsson 422c63ed222SJonas Paulssondefine <2 x i64> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 423f496bd9aSJonas Paulsson; CHECK-LABEL: fun22: 42425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 425c63ed222SJonas Paulsson; CHECK-DAG: vceqg [[REG0:%v[0-9]+]], %v24, %v26 426c63ed222SJonas Paulsson; CHECK-DAG: vceqg [[REG1:%v[0-9]+]], %v28, %v30 427c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]] 428f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 429f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 430f496bd9aSJonas Paulsson %cmp0 = icmp eq <2 x i64> %val1, %val2 431c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i64> %val3, %val4 432f496bd9aSJonas Paulsson %and = and <2 x i1> %cmp0, %cmp1 433f496bd9aSJonas Paulsson %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 434f496bd9aSJonas Paulsson ret <2 x i64> %sel 435f496bd9aSJonas Paulsson} 436f496bd9aSJonas Paulsson 437c63ed222SJonas Paulssondefine <4 x i32> @fun23(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) { 438f496bd9aSJonas Paulsson; CHECK-LABEL: fun23: 43925528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 440c63ed222SJonas Paulsson; CHECK-NEXT: vceqg %v0, %v26, %v30 441c63ed222SJonas Paulsson; CHECK-NEXT: vceqg %v1, %v24, %v28 442c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v0, %v1, %v0 443c63ed222SJonas Paulsson; CHECK-NEXT: vceqf %v1, %v25, %v27 444c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, %v0, %v1 445c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 446f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 447c63ed222SJonas Paulsson %cmp0 = icmp eq <4 x i64> %val1, %val2 448c63ed222SJonas Paulsson %cmp1 = icmp eq <4 x i32> %val3, %val4 449c63ed222SJonas Paulsson %and = xor <4 x i1> %cmp0, %cmp1 450c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 451c63ed222SJonas Paulsson ret <4 x i32> %sel 452f496bd9aSJonas Paulsson} 453f496bd9aSJonas Paulsson 454c63ed222SJonas Paulssondefine <4 x i64> @fun24(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) { 455f496bd9aSJonas Paulsson; CHECK-LABEL: fun24: 45625528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 457c63ed222SJonas Paulsson; CHECK-NEXT: vceqf [[REG0:%v[0-9]+]], %v25, %v27 458c63ed222SJonas Paulsson; CHECK-NEXT: vuphf [[REG1:%v[0-9]+]], [[REG0]] 459c63ed222SJonas Paulsson; CHECK-NEXT: vmrlg [[REG2:%v[0-9]+]], [[REG0]], [[REG0]] 460c88d3f6aSJonas Paulsson; CHECK-DAG: vceqg [[REG3:%v[0-9]+]], %v24, %v28 461c88d3f6aSJonas Paulsson; CHECK-DAG: vceqg [[REG4:%v[0-9]+]], %v26, %v30 462c88d3f6aSJonas Paulsson; CHECK-DAG: vuphf [[REG5:%v[0-9]+]], [[REG2]] 463c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG6:%v[0-9]+]], 176(%r15) 464c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15) 465c63ed222SJonas Paulsson; CHECK-DAG: vx [[REG8:%v[0-9]+]], [[REG4]], [[REG5]] 466c63ed222SJonas Paulsson; CHECK-DAG: vx [[REG9:%v[0-9]+]], [[REG3]], [[REG1]] 467c63ed222SJonas Paulsson; CHECK-DAG: vsel %v24, %v29, [[REG7]], [[REG9]] 468c63ed222SJonas Paulsson; CHECK-DAG: vsel %v26, %v31, [[REG6]], [[REG8]] 469f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 470c63ed222SJonas Paulsson %cmp0 = icmp eq <4 x i64> %val1, %val2 471c63ed222SJonas Paulsson %cmp1 = icmp eq <4 x i32> %val3, %val4 472c63ed222SJonas Paulsson %and = xor <4 x i1> %cmp0, %cmp1 473c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 474c63ed222SJonas Paulsson ret <4 x i64> %sel 475f496bd9aSJonas Paulsson} 476f496bd9aSJonas Paulsson 477c63ed222SJonas Paulssondefine <2 x float> @fun25(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) { 478f496bd9aSJonas Paulsson; CHECK-LABEL: fun25: 47925528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 480f496bd9aSJonas Paulsson; CHECK-NEXT: vmrlf %v0, %v26, %v26 481f496bd9aSJonas Paulsson; CHECK-NEXT: vmrlf %v1, %v24, %v24 482f496bd9aSJonas Paulsson; CHECK-NEXT: vldeb %v0, %v0 483f496bd9aSJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 484f496bd9aSJonas Paulsson; CHECK-NEXT: vfchdb %v0, %v1, %v0 485f496bd9aSJonas Paulsson; CHECK-NEXT: vmrhf %v1, %v26, %v26 486f496bd9aSJonas Paulsson; CHECK-NEXT: vmrhf %v2, %v24, %v24 487f496bd9aSJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 488f496bd9aSJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 489f496bd9aSJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v2, %v1 490f496bd9aSJonas Paulsson; CHECK-NEXT: vpkg %v0, %v1, %v0 491f496bd9aSJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v28, %v30 492f496bd9aSJonas Paulsson; CHECK-NEXT: vpkg %v1, %v1, %v1 493c63ed222SJonas Paulsson; CHECK-NEXT: vo %v0, %v0, %v1 494f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 495f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 496c63ed222SJonas Paulsson; 497c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun25: 49825528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 499c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v1, %v28, %v30 500c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26 501c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vpkg %v1, %v1, %v1 502c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vo %v0, %v0, %v1 503c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v25, %v27, %v0 504c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 505f496bd9aSJonas Paulsson %cmp0 = fcmp ogt <2 x float> %val1, %val2 506f496bd9aSJonas Paulsson %cmp1 = fcmp ogt <2 x double> %val3, %val4 507c63ed222SJonas Paulsson %and = or <2 x i1> %cmp0, %cmp1 508c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 509c63ed222SJonas Paulsson ret <2 x float> %sel 510f496bd9aSJonas Paulsson} 511f496bd9aSJonas Paulsson 512c63ed222SJonas Paulssondefine <2 x double> @fun26(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x double> %val5, <2 x double> %val6) { 513f496bd9aSJonas Paulsson; CHECK-LABEL: fun26: 51425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 515c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v0, %v26, %v26 516c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v1, %v24, %v24 517c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v0, %v0 518c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 519c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v0, %v1, %v0 520c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v1, %v26, %v26 521c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v2, %v24, %v24 522c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 523c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 524c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v2, %v1 525c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v0, %v1, %v0 526c63ed222SJonas Paulsson; CHECK-NEXT: vuphf %v0, %v0 527c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v28, %v30 528c63ed222SJonas Paulsson; CHECK-NEXT: vo %v0, %v0, %v1 529f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 530f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 531c63ed222SJonas Paulsson; 532c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun26: 53325528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 534c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26 535c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vuphf %v0, %v0 536c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v1, %v28, %v30 537c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vo %v0, %v0, %v1 538c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v25, %v27, %v0 539c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 540c63ed222SJonas Paulsson %cmp0 = fcmp ogt <2 x float> %val1, %val2 541c63ed222SJonas Paulsson %cmp1 = fcmp ogt <2 x double> %val3, %val4 542c63ed222SJonas Paulsson %and = or <2 x i1> %cmp0, %cmp1 543c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6 544c63ed222SJonas Paulsson ret <2 x double> %sel 545f496bd9aSJonas Paulsson} 546f496bd9aSJonas Paulsson 547c63ed222SJonas Paulsson; Also check a widening select of a vector of floats 548c63ed222SJonas Paulssondefine <2 x float> @fun27(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x float> %val5, <2 x float> %val6) { 549f496bd9aSJonas Paulsson; CHECK-LABEL: fun27: 55025528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 551c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26 552c63ed222SJonas Paulsson; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v28, %v30 553c63ed222SJonas Paulsson; CHECK-NEXT: vo %v0, [[REG0]], [[REG1]] 554c63ed222SJonas Paulsson; CHECK-NEXT: vuphb %v0, %v0 555c63ed222SJonas Paulsson; CHECK-NEXT: vuphh %v0, %v0 556f496bd9aSJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 557f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 558c63ed222SJonas Paulsson %cmp0 = icmp eq <2 x i8> %val1, %val2 559c63ed222SJonas Paulsson %cmp1 = icmp eq <2 x i8> %val3, %val4 560c63ed222SJonas Paulsson %and = or <2 x i1> %cmp0, %cmp1 561c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 562c63ed222SJonas Paulsson ret <2 x float> %sel 563f496bd9aSJonas Paulsson} 564f496bd9aSJonas Paulsson 565c63ed222SJonas Paulssondefine <4 x float> @fun28(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) { 566f496bd9aSJonas Paulsson; CHECK-LABEL: fun28: 56725528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 568c63ed222SJonas Paulsson; CHECK-DAG: vmrlf [[REG0:%v[0-9]+]], %v26, %v26 569c63ed222SJonas Paulsson; CHECK-DAG: vmrlf [[REG1:%v[0-9]+]], %v24, %v24 570c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG2:%v[0-9]+]], [[REG0]] 571c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG3:%v[0-9]+]], [[REG1]] 572c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG4:%v[0-9]+]], [[REG3]], [[REG2]] 573c63ed222SJonas Paulsson; CHECK-DAG: vmrhf [[REG5:%v[0-9]+]], %v26, %v26 574c63ed222SJonas Paulsson; CHECK-DAG: vmrhf [[REG6:%v[0-9]+]], %v24, %v24 575c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG7:%v[0-9]+]], [[REG5]] 576c63ed222SJonas Paulsson; CHECK-DAG: vmrhf [[REG8:%v[0-9]+]], %v28, %v28 577c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG9:%v[0-9]+]], [[REG6]] 578c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG10:%v[0-9]+]], [[REG9]], [[REG7]] 579c63ed222SJonas Paulsson; CHECK-DAG: vpkg [[REG11:%v[0-9]+]], [[REG10]], [[REG4]] 580c63ed222SJonas Paulsson; CHECK-DAG: vmrlf [[REG12:%v[0-9]+]], %v30, %v30 581c63ed222SJonas Paulsson; CHECK-DAG: vmrlf [[REG13:%v[0-9]+]], %v28, %v28 582c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG14:%v[0-9]+]], [[REG12]] 583c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG15:%v[0-9]+]], [[REG13]] 584c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG16:%v[0-9]+]], [[REG15]], [[REG14]] 585c63ed222SJonas Paulsson; CHECK-DAG: vmrhf [[REG17:%v[0-9]+]], %v30, %v30 586c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG19:%v[0-9]+]], [[REG17]] 587c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG20:%v[0-9]+]], [[REG8]] 588c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v2, [[REG20]], [[REG19]] 589c63ed222SJonas Paulsson; CHECK-NEXT: vpkg [[REG21:%v[0-9]+]], %v2, [[REG16]] 590c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, [[REG11]], [[REG21]] 591c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 592f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 593c63ed222SJonas Paulsson; 594c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun28: 59525528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 596c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26 597c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v1, %v28, %v30 598c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vx %v0, %v0, %v1 599c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v25, %v27, %v0 600c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 601c63ed222SJonas Paulsson %cmp0 = fcmp ogt <4 x float> %val1, %val2 602c63ed222SJonas Paulsson %cmp1 = fcmp ogt <4 x float> %val3, %val4 603c63ed222SJonas Paulsson %and = xor <4 x i1> %cmp0, %cmp1 604c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 605c63ed222SJonas Paulsson ret <4 x float> %sel 606f496bd9aSJonas Paulsson} 607f496bd9aSJonas Paulsson 608c63ed222SJonas Paulssondefine <4 x double> @fun29(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) { 609f496bd9aSJonas Paulsson; CHECK-LABEL: fun29: 61025528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 611c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v0, %v26, %v26 612c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v1, %v24, %v24 613c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v0, %v0 614c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 615c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v0, %v1, %v0 616c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v1, %v26, %v26 617c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v2, %v24, %v24 618c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 619c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v3, %v28, %v28 620c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 621c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v2, %v1 622f496bd9aSJonas Paulsson; CHECK-NEXT: vpkg %v0, %v1, %v0 623c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v1, %v30, %v30 624c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v2, %v28, %v28 625c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 626c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 627c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v2, %v1 628c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v2, %v30, %v30 629c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 630c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v3, %v3 631c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v2, %v3, %v2 632c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v1, %v2, %v1 633c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, %v0, %v1 634c63ed222SJonas Paulsson; CHECK-NEXT: vmrlg %v1, %v0, %v0 635c63ed222SJonas Paulsson; CHECK-NEXT: vuphf %v1, %v1 636c63ed222SJonas Paulsson; CHECK-NEXT: vuphf %v0, %v0 637c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 638c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v26, %v27, %v31, %v1 639f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 640c63ed222SJonas Paulsson; 641c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun29: 64225528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 643c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26 644c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v1, %v28, %v30 645c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vx %v0, %v0, %v1 646c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vmrlg %v1, %v0, %v0 647c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vuphf %v1, %v1 648c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vuphf %v0, %v0 649c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v25, %v29, %v0 650c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v26, %v27, %v31, %v1 651c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 652c63ed222SJonas Paulsson %cmp0 = fcmp ogt <4 x float> %val1, %val2 653c63ed222SJonas Paulsson %cmp1 = fcmp ogt <4 x float> %val3, %val4 654c63ed222SJonas Paulsson %and = xor <4 x i1> %cmp0, %cmp1 655c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6 656c63ed222SJonas Paulsson ret <4 x double> %sel 657f496bd9aSJonas Paulsson} 658f496bd9aSJonas Paulsson 659c63ed222SJonas Paulssondefine <8 x float> @fun30(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x float> %val5, <8 x float> %val6) { 660f496bd9aSJonas Paulsson; CHECK-LABEL: fun30: 66125528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 662c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v16, %v28, %v28 663c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v17, %v24, %v24 664c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v16, %v16 665c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v17, %v17 666c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v16, %v17, %v16 667c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v17, %v28, %v28 668c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v18, %v24, %v24 669c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v17, %v17 670c63ed222SJonas Paulsson; CHECK-NEXT: vl %v4, 192(%r15) 671c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v18, %v18 672c63ed222SJonas Paulsson; CHECK-NEXT: vl %v5, 208(%r15) 673c63ed222SJonas Paulsson; CHECK-NEXT: vl %v6, 160(%r15) 674c63ed222SJonas Paulsson; CHECK-NEXT: vl %v7, 176(%r15) 675c63ed222SJonas Paulsson; CHECK-NEXT: vl %v0, 272(%r15) 676c63ed222SJonas Paulsson; CHECK-NEXT: vl %v1, 240(%r15) 677c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v17, %v18, %v17 678c63ed222SJonas Paulsson; CHECK-NEXT: vl %v2, 256(%r15) 679c63ed222SJonas Paulsson; CHECK-NEXT: vl %v3, 224(%r15) 680c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v16, %v17, %v16 681c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v17, %v30, %v30 682c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v18, %v26, %v26 683c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v19, %v26, %v26 684c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v7, %v27, %v7 685c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v6, %v25, %v6 686c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v5, %v31, %v5 687c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v4, %v29, %v4 688c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v6, %v6, %v7 689c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v4, %v4, %v5 690c63ed222SJonas Paulsson; CHECK-NEXT: vn %v5, %v16, %v6 691*2f12e45dSJonas Paulsson; CHECK-DAG: vsel %v24, %v3, %v2, %v5 692*2f12e45dSJonas Paulsson; CHECK-DAG: vldeb %v17, %v17 693c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v18, %v18 694c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v17, %v18, %v17 695c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v18, %v30, %v30 696c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v18, %v18 697c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v19, %v19 698c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v18, %v19, %v18 699c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v17, %v18, %v17 700c63ed222SJonas Paulsson; CHECK-NEXT: vn %v4, %v17, %v4 701c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v26, %v1, %v0, %v4 702f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 703c63ed222SJonas Paulsson; 704c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun30: 70525528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 706c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vl %v4, 192(%r15) 707c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vl %v5, 208(%r15) 708c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vl %v6, 160(%r15) 709c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vl %v7, 176(%r15) 710c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v7, %v27, %v7 711c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v6, %v25, %v6 712c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v5, %v31, %v5 713c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v4, %v29, %v4 714c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vfchsb %v16, %v24, %v28 715c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vfchsb %v17, %v26, %v30 716c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vpkg %v6, %v6, %v7 717c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vpkg %v4, %v4, %v5 718c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vl %v0, 272(%r15) 719c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vl %v1, 240(%r15) 720c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vl %v2, 256(%r15) 721c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vl %v3, 224(%r15) 722c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vn %v4, %v17, %v4 723c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vn %v5, %v16, %v6 724c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v3, %v2, %v5 725c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v26, %v1, %v0, %v4 726c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 727c63ed222SJonas Paulsson %cmp0 = fcmp ogt <8 x float> %val1, %val2 728c63ed222SJonas Paulsson %cmp1 = fcmp ogt <8 x double> %val3, %val4 729c63ed222SJonas Paulsson %and = and <8 x i1> %cmp0, %cmp1 730c63ed222SJonas Paulsson %sel = select <8 x i1> %and, <8 x float> %val5, <8 x float> %val6 731c63ed222SJonas Paulsson ret <8 x float> %sel 732f496bd9aSJonas Paulsson} 733f496bd9aSJonas Paulsson 734c63ed222SJonas Paulssondefine <2 x float> @fun31(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) { 735f496bd9aSJonas Paulsson; CHECK-LABEL: fun31: 73625528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 737c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG0:%v[0-9]+]], %v24, %v26 738c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG1:%v[0-9]+]], %v28, %v30 739c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]] 740c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v0, %v0, %v0 741c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 742f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 743c63ed222SJonas Paulsson %cmp0 = fcmp ogt <2 x double> %val1, %val2 744c63ed222SJonas Paulsson %cmp1 = fcmp ogt <2 x double> %val3, %val4 745c63ed222SJonas Paulsson %and = xor <2 x i1> %cmp0, %cmp1 746c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 747c63ed222SJonas Paulsson ret <2 x float> %sel 748f496bd9aSJonas Paulsson} 749f496bd9aSJonas Paulsson 750c63ed222SJonas Paulssondefine <2 x double> @fun32(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4, <2 x double> %val5, <2 x double> %val6) { 751f496bd9aSJonas Paulsson; CHECK-LABEL: fun32: 75225528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 753c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG0:%v[0-9]+]], %v24, %v26 754c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG1:%v[0-9]+]], %v28, %v30 755c63ed222SJonas Paulsson; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]] 756c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 757f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 758c63ed222SJonas Paulsson %cmp0 = fcmp ogt <2 x double> %val1, %val2 759c63ed222SJonas Paulsson %cmp1 = fcmp ogt <2 x double> %val3, %val4 760c63ed222SJonas Paulsson %and = xor <2 x i1> %cmp0, %cmp1 761c63ed222SJonas Paulsson %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6 762c63ed222SJonas Paulsson ret <2 x double> %sel 763f496bd9aSJonas Paulsson} 764f496bd9aSJonas Paulsson 765c63ed222SJonas Paulssondefine <4 x float> @fun33(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) { 766f496bd9aSJonas Paulsson; CHECK-LABEL: fun33: 76725528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 768c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v0, %v26, %v30 769c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v24, %v28 770c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v0, %v1, %v0 771c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v1, %v27, %v27 772c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf %v2, %v25, %v25 773c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v1, %v1 774c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 775c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v1, %v2, %v1 776c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v2, %v27, %v27 777c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf %v3, %v25, %v25 778c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v2, %v2 779c63ed222SJonas Paulsson; CHECK-NEXT: vldeb %v3, %v3 780c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb %v2, %v3, %v2 781c63ed222SJonas Paulsson; CHECK-NEXT: vpkg %v1, %v2, %v1 782c63ed222SJonas Paulsson; CHECK-NEXT: vn %v0, %v0, %v1 783c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 784f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 785c63ed222SJonas Paulsson; 786c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun33: 78725528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 788c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v0, %v26, %v30 789c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchdb %v1, %v24, %v28 790c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vpkg %v0, %v1, %v0 791c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v1, %v25, %v27 792c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vn %v0, %v0, %v1 793c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v29, %v31, %v0 794c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 795c63ed222SJonas Paulsson %cmp0 = fcmp ogt <4 x double> %val1, %val2 796c63ed222SJonas Paulsson %cmp1 = fcmp ogt <4 x float> %val3, %val4 797f496bd9aSJonas Paulsson %and = and <4 x i1> %cmp0, %cmp1 798c63ed222SJonas Paulsson %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 799c63ed222SJonas Paulsson ret <4 x float> %sel 800f496bd9aSJonas Paulsson} 801f496bd9aSJonas Paulsson 802c63ed222SJonas Paulssondefine <4 x double> @fun34(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) { 803f496bd9aSJonas Paulsson; CHECK-LABEL: fun34: 80425528d6dSFrancis Visoiu Mistrih; CHECK: # %bb.0: 805c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf [[REG0:%v[0-9]+]], %v27, %v27 806c63ed222SJonas Paulsson; CHECK-NEXT: vmrlf [[REG1:%v[0-9]+]], %v25, %v25 807c63ed222SJonas Paulsson; CHECK-NEXT: vldeb [[REG2:%v[0-9]+]], [[REG0]] 808c63ed222SJonas Paulsson; CHECK-NEXT: vldeb [[REG3:%v[0-9]+]], [[REG1]] 809c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb [[REG4:%v[0-9]+]], [[REG3]], [[REG2]] 810c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf [[REG5:%v[0-9]+]], %v27, %v27 811c63ed222SJonas Paulsson; CHECK-NEXT: vmrhf [[REG6:%v[0-9]+]], %v25, %v25 812c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG7:%v[0-9]+]], [[REG5]] 813c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG8:%v[0-9]+]], 176(%r15) 814c63ed222SJonas Paulsson; CHECK-DAG: vldeb [[REG9:%v[0-9]+]], [[REG6]] 815c63ed222SJonas Paulsson; CHECK-DAG: vl [[REG10:%v[0-9]+]], 160(%r15) 816c63ed222SJonas Paulsson; CHECK-DAG: vfchdb [[REG11:%v[0-9]+]], [[REG9]], [[REG7]] 817c63ed222SJonas Paulsson; CHECK-DAG: vpkg [[REG12:%v[0-9]+]], [[REG11]], [[REG4]] 818c63ed222SJonas Paulsson; CHECK-DAG: vuphf [[REG13:%v[0-9]+]], [[REG12]] 819c63ed222SJonas Paulsson; CHECK-DAG: vmrlg [[REG14:%v[0-9]+]], [[REG12]], [[REG12]] 820c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb [[REG15:%v[0-9]+]], %v24, %v28 821c63ed222SJonas Paulsson; CHECK-NEXT: vfchdb [[REG16:%v[0-9]+]], %v26, %v30 822c63ed222SJonas Paulsson; CHECK-NEXT: vuphf [[REG17:%v[0-9]+]], [[REG14]] 823c63ed222SJonas Paulsson; CHECK-NEXT: vn [[REG18:%v[0-9]+]], [[REG16]], [[REG17]] 824c63ed222SJonas Paulsson; CHECK-NEXT: vn [[REG19:%v[0-9]+]], [[REG15]], [[REG13]] 825c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v24, %v29, [[REG10]], [[REG19]] 826c63ed222SJonas Paulsson; CHECK-NEXT: vsel %v26, %v31, [[REG8]], [[REG18]] 827f496bd9aSJonas Paulsson; CHECK-NEXT: br %r14 828c63ed222SJonas Paulsson; 829c63ed222SJonas Paulsson; CHECK-Z14-LABEL: fun34: 83025528d6dSFrancis Visoiu Mistrih; CHECK-Z14: # %bb.0: 831c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vfchsb %v4, %v25, %v27 832c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vuphf %v5, %v4 833c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vmrlg %v4, %v4, %v4 834c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vfchdb %v2, %v24, %v28 835c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vfchdb %v3, %v26, %v30 836c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vuphf %v4, %v4 837c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vl %v0, 176(%r15) 838c88d3f6aSJonas Paulsson; CHECK-Z14-DAG: vl %v1, 160(%r15) 839c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vn %v3, %v3, %v4 840c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vn %v2, %v2, %v5 841c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v24, %v29, %v1, %v2 842c63ed222SJonas Paulsson; CHECK-Z14-NEXT: vsel %v26, %v31, %v0, %v3 843c63ed222SJonas Paulsson; CHECK-Z14-NEXT: br %r14 844c63ed222SJonas Paulsson %cmp0 = fcmp ogt <4 x double> %val1, %val2 845f496bd9aSJonas Paulsson %cmp1 = fcmp ogt <4 x float> %val3, %val4 846f496bd9aSJonas Paulsson %and = and <4 x i1> %cmp0, %cmp1 847f496bd9aSJonas Paulsson %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6 848f496bd9aSJonas Paulsson ret <4 x double> %sel 849f496bd9aSJonas Paulsson} 850