Expand Up
@@ -29,7 +29,7 @@ define <16 x i8> @select_v16i8(<16 x i8> %op1, <16 x i8> %op2, <16 x i1> %mask)
ret <16 x i8 > %sel
}
define void @select_v32i8 (< 32 x i8 >* %a , < 32 x i8 >* %b ) vscale_range(2 ,0 ) #0 {
define void @select_v32i8 (ptr %a , ptr %b ) vscale_range(2 ,0 ) #0 {
; CHECK-LABEL: select_v32i8:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.b, vl32
Expand All
@@ -39,15 +39,15 @@ define void @select_v32i8(<32 x i8>* %a, <32 x i8>* %b) vscale_range(2,0) #0 {
; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
; CHECK-NEXT: st1b { z0.b }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <32 x i8 >, < 32 x i8 >* %a
%op2 = load <32 x i8 >, < 32 x i8 >* %b
%op1 = load <32 x i8 >, ptr %a
%op2 = load <32 x i8 >, ptr %b
%mask = icmp eq <32 x i8 > %op1 , %op2
%sel = select <32 x i1 > %mask , <32 x i8 > %op1 , <32 x i8 > %op2
store <32 x i8 > %sel , < 32 x i8 >* %a
store <32 x i8 > %sel , ptr %a
ret void
}
define void @select_v64i8 (< 64 x i8 >* %a , < 64 x i8 >* %b ) #0 {
define void @select_v64i8 (ptr %a , ptr %b ) #0 {
; VBITS_GE_256-LABEL: select_v64i8:
; VBITS_GE_256: // %bb.0:
; VBITS_GE_256-NEXT: mov w8, #32
Expand All
@@ -73,15 +73,15 @@ define void @select_v64i8(<64 x i8>* %a, <64 x i8>* %b) #0 {
; VBITS_GE_512-NEXT: sel z0.b, p1, z0.b, z1.b
; VBITS_GE_512-NEXT: st1b { z0.b }, p0, [x0]
; VBITS_GE_512-NEXT: ret
%op1 = load <64 x i8 >, < 64 x i8 >* %a
%op2 = load <64 x i8 >, < 64 x i8 >* %b
%op1 = load <64 x i8 >, ptr %a
%op2 = load <64 x i8 >, ptr %b
%mask = icmp eq <64 x i8 > %op1 , %op2
%sel = select <64 x i1 > %mask , <64 x i8 > %op1 , <64 x i8 > %op2
store <64 x i8 > %sel , < 64 x i8 >* %a
store <64 x i8 > %sel , ptr %a
ret void
}
define void @select_v128i8 (< 128 x i8 >* %a , < 128 x i8 >* %b ) vscale_range(8 ,0 ) #0 {
define void @select_v128i8 (ptr %a , ptr %b ) vscale_range(8 ,0 ) #0 {
; CHECK-LABEL: select_v128i8:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.b, vl128
Expand All
@@ -91,15 +91,15 @@ define void @select_v128i8(<128 x i8>* %a, <128 x i8>* %b) vscale_range(8,0) #0
; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
; CHECK-NEXT: st1b { z0.b }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <128 x i8 >, < 128 x i8 >* %a
%op2 = load <128 x i8 >, < 128 x i8 >* %b
%op1 = load <128 x i8 >, ptr %a
%op2 = load <128 x i8 >, ptr %b
%mask = icmp eq <128 x i8 > %op1 , %op2
%sel = select <128 x i1 > %mask , <128 x i8 > %op1 , <128 x i8 > %op2
store <128 x i8 > %sel , < 128 x i8 >* %a
store <128 x i8 > %sel , ptr %a
ret void
}
define void @select_v256i8 (< 256 x i8 >* %a , < 256 x i8 >* %b ) vscale_range(16 ,0 ) #0 {
define void @select_v256i8 (ptr %a , ptr %b ) vscale_range(16 ,0 ) #0 {
; CHECK-LABEL: select_v256i8:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.b, vl256
Expand All
@@ -109,11 +109,11 @@ define void @select_v256i8(<256 x i8>* %a, <256 x i8>* %b) vscale_range(16,0) #0
; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
; CHECK-NEXT: st1b { z0.b }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <256 x i8 >, < 256 x i8 >* %a
%op2 = load <256 x i8 >, < 256 x i8 >* %b
%op1 = load <256 x i8 >, ptr %a
%op2 = load <256 x i8 >, ptr %b
%mask = icmp eq <256 x i8 > %op1 , %op2
%sel = select <256 x i1 > %mask , <256 x i8 > %op1 , <256 x i8 > %op2
store <256 x i8 > %sel , < 256 x i8 >* %a
store <256 x i8 > %sel , ptr %a
ret void
}
Expand Down
Expand Up
@@ -142,7 +142,7 @@ define <8 x i16> @select_v8i16(<8 x i16> %op1, <8 x i16> %op2, <8 x i1> %mask) v
ret <8 x i16 > %sel
}
define void @select_v16i16 (< 16 x i16 >* %a , < 16 x i16 >* %b ) vscale_range(2 ,0 ) #0 {
define void @select_v16i16 (ptr %a , ptr %b ) vscale_range(2 ,0 ) #0 {
; CHECK-LABEL: select_v16i16:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.h, vl16
Expand All
@@ -152,15 +152,15 @@ define void @select_v16i16(<16 x i16>* %a, <16 x i16>* %b) vscale_range(2,0) #0
; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
; CHECK-NEXT: st1h { z0.h }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <16 x i16 >, < 16 x i16 >* %a
%op2 = load <16 x i16 >, < 16 x i16 >* %b
%op1 = load <16 x i16 >, ptr %a
%op2 = load <16 x i16 >, ptr %b
%mask = icmp eq <16 x i16 > %op1 , %op2
%sel = select <16 x i1 > %mask , <16 x i16 > %op1 , <16 x i16 > %op2
store <16 x i16 > %sel , < 16 x i16 >* %a
store <16 x i16 > %sel , ptr %a
ret void
}
define void @select_v32i16 (< 32 x i16 >* %a , < 32 x i16 >* %b ) #0 {
define void @select_v32i16 (ptr %a , ptr %b ) #0 {
; VBITS_GE_256-LABEL: select_v32i16:
; VBITS_GE_256: // %bb.0:
; VBITS_GE_256-NEXT: mov x8, #16
Expand All
@@ -186,15 +186,15 @@ define void @select_v32i16(<32 x i16>* %a, <32 x i16>* %b) #0 {
; VBITS_GE_512-NEXT: sel z0.h, p1, z0.h, z1.h
; VBITS_GE_512-NEXT: st1h { z0.h }, p0, [x0]
; VBITS_GE_512-NEXT: ret
%op1 = load <32 x i16 >, < 32 x i16 >* %a
%op2 = load <32 x i16 >, < 32 x i16 >* %b
%op1 = load <32 x i16 >, ptr %a
%op2 = load <32 x i16 >, ptr %b
%mask = icmp eq <32 x i16 > %op1 , %op2
%sel = select <32 x i1 > %mask , <32 x i16 > %op1 , <32 x i16 > %op2
store <32 x i16 > %sel , < 32 x i16 >* %a
store <32 x i16 > %sel , ptr %a
ret void
}
define void @select_v64i16 (< 64 x i16 >* %a , < 64 x i16 >* %b ) vscale_range(8 ,0 ) #0 {
define void @select_v64i16 (ptr %a , ptr %b ) vscale_range(8 ,0 ) #0 {
; CHECK-LABEL: select_v64i16:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.h, vl64
Expand All
@@ -204,15 +204,15 @@ define void @select_v64i16(<64 x i16>* %a, <64 x i16>* %b) vscale_range(8,0) #0
; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
; CHECK-NEXT: st1h { z0.h }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <64 x i16 >, < 64 x i16 >* %a
%op2 = load <64 x i16 >, < 64 x i16 >* %b
%op1 = load <64 x i16 >, ptr %a
%op2 = load <64 x i16 >, ptr %b
%mask = icmp eq <64 x i16 > %op1 , %op2
%sel = select <64 x i1 > %mask , <64 x i16 > %op1 , <64 x i16 > %op2
store <64 x i16 > %sel , < 64 x i16 >* %a
store <64 x i16 > %sel , ptr %a
ret void
}
define void @select_v128i16 (< 128 x i16 >* %a , < 128 x i16 >* %b ) vscale_range(16 ,0 ) #0 {
define void @select_v128i16 (ptr %a , ptr %b ) vscale_range(16 ,0 ) #0 {
; CHECK-LABEL: select_v128i16:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.h, vl128
Expand All
@@ -222,11 +222,11 @@ define void @select_v128i16(<128 x i16>* %a, <128 x i16>* %b) vscale_range(16,0)
; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
; CHECK-NEXT: st1h { z0.h }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <128 x i16 >, < 128 x i16 >* %a
%op2 = load <128 x i16 >, < 128 x i16 >* %b
%op1 = load <128 x i16 >, ptr %a
%op2 = load <128 x i16 >, ptr %b
%mask = icmp eq <128 x i16 > %op1 , %op2
%sel = select <128 x i1 > %mask , <128 x i16 > %op1 , <128 x i16 > %op2
store <128 x i16 > %sel , < 128 x i16 >* %a
store <128 x i16 > %sel , ptr %a
ret void
}
Expand Down
Expand Up
@@ -255,7 +255,7 @@ define <4 x i32> @select_v4i32(<4 x i32> %op1, <4 x i32> %op2, <4 x i1> %mask) v
ret <4 x i32 > %sel
}
define void @select_v8i32 (< 8 x i32 >* %a , < 8 x i32 >* %b ) vscale_range(2 ,0 ) #0 {
define void @select_v8i32 (ptr %a , ptr %b ) vscale_range(2 ,0 ) #0 {
; CHECK-LABEL: select_v8i32:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.s, vl8
Expand All
@@ -265,15 +265,15 @@ define void @select_v8i32(<8 x i32>* %a, <8 x i32>* %b) vscale_range(2,0) #0 {
; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
; CHECK-NEXT: st1w { z0.s }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <8 x i32 >, < 8 x i32 >* %a
%op2 = load <8 x i32 >, < 8 x i32 >* %b
%op1 = load <8 x i32 >, ptr %a
%op2 = load <8 x i32 >, ptr %b
%mask = icmp eq <8 x i32 > %op1 , %op2
%sel = select <8 x i1 > %mask , <8 x i32 > %op1 , <8 x i32 > %op2
store <8 x i32 > %sel , < 8 x i32 >* %a
store <8 x i32 > %sel , ptr %a
ret void
}
define void @select_v16i32 (< 16 x i32 >* %a , < 16 x i32 >* %b ) #0 {
define void @select_v16i32 (ptr %a , ptr %b ) #0 {
; VBITS_GE_256-LABEL: select_v16i32:
; VBITS_GE_256: // %bb.0:
; VBITS_GE_256-NEXT: mov x8, #8
Expand All
@@ -299,15 +299,15 @@ define void @select_v16i32(<16 x i32>* %a, <16 x i32>* %b) #0 {
; VBITS_GE_512-NEXT: sel z0.s, p1, z0.s, z1.s
; VBITS_GE_512-NEXT: st1w { z0.s }, p0, [x0]
; VBITS_GE_512-NEXT: ret
%op1 = load <16 x i32 >, < 16 x i32 >* %a
%op2 = load <16 x i32 >, < 16 x i32 >* %b
%op1 = load <16 x i32 >, ptr %a
%op2 = load <16 x i32 >, ptr %b
%mask = icmp eq <16 x i32 > %op1 , %op2
%sel = select <16 x i1 > %mask , <16 x i32 > %op1 , <16 x i32 > %op2
store <16 x i32 > %sel , < 16 x i32 >* %a
store <16 x i32 > %sel , ptr %a
ret void
}
define void @select_v32i32 (< 32 x i32 >* %a , < 32 x i32 >* %b ) vscale_range(8 ,0 ) #0 {
define void @select_v32i32 (ptr %a , ptr %b ) vscale_range(8 ,0 ) #0 {
; CHECK-LABEL: select_v32i32:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.s, vl32
Expand All
@@ -317,15 +317,15 @@ define void @select_v32i32(<32 x i32>* %a, <32 x i32>* %b) vscale_range(8,0) #0
; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
; CHECK-NEXT: st1w { z0.s }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <32 x i32 >, < 32 x i32 >* %a
%op2 = load <32 x i32 >, < 32 x i32 >* %b
%op1 = load <32 x i32 >, ptr %a
%op2 = load <32 x i32 >, ptr %b
%mask = icmp eq <32 x i32 > %op1 , %op2
%sel = select <32 x i1 > %mask , <32 x i32 > %op1 , <32 x i32 > %op2
store <32 x i32 > %sel , < 32 x i32 >* %a
store <32 x i32 > %sel , ptr %a
ret void
}
define void @select_v64i32 (< 64 x i32 >* %a , < 64 x i32 >* %b ) vscale_range(16 ,0 ) #0 {
define void @select_v64i32 (ptr %a , ptr %b ) vscale_range(16 ,0 ) #0 {
; CHECK-LABEL: select_v64i32:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.s, vl64
Expand All
@@ -335,11 +335,11 @@ define void @select_v64i32(<64 x i32>* %a, <64 x i32>* %b) vscale_range(16,0) #0
; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
; CHECK-NEXT: st1w { z0.s }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <64 x i32 >, < 64 x i32 >* %a
%op2 = load <64 x i32 >, < 64 x i32 >* %b
%op1 = load <64 x i32 >, ptr %a
%op2 = load <64 x i32 >, ptr %b
%mask = icmp eq <64 x i32 > %op1 , %op2
%sel = select <64 x i1 > %mask , <64 x i32 > %op1 , <64 x i32 > %op2
store <64 x i32 > %sel , < 64 x i32 >* %a
store <64 x i32 > %sel , ptr %a
ret void
}
Expand Down
Expand Up
@@ -369,7 +369,7 @@ define <2 x i64> @select_v2i64(<2 x i64> %op1, <2 x i64> %op2, <2 x i1> %mask) v
ret <2 x i64 > %sel
}
define void @select_v4i64 (< 4 x i64 >* %a , < 4 x i64 >* %b ) vscale_range(2 ,0 ) #0 {
define void @select_v4i64 (ptr %a , ptr %b ) vscale_range(2 ,0 ) #0 {
; CHECK-LABEL: select_v4i64:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.d, vl4
Expand All
@@ -379,15 +379,15 @@ define void @select_v4i64(<4 x i64>* %a, <4 x i64>* %b) vscale_range(2,0) #0 {
; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
; CHECK-NEXT: st1d { z0.d }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <4 x i64 >, < 4 x i64 >* %a
%op2 = load <4 x i64 >, < 4 x i64 >* %b
%op1 = load <4 x i64 >, ptr %a
%op2 = load <4 x i64 >, ptr %b
%mask = icmp eq <4 x i64 > %op1 , %op2
%sel = select <4 x i1 > %mask , <4 x i64 > %op1 , <4 x i64 > %op2
store <4 x i64 > %sel , < 4 x i64 >* %a
store <4 x i64 > %sel , ptr %a
ret void
}
define void @select_v8i64 (< 8 x i64 >* %a , < 8 x i64 >* %b ) #0 {
define void @select_v8i64 (ptr %a , ptr %b ) #0 {
; VBITS_GE_256-LABEL: select_v8i64:
; VBITS_GE_256: // %bb.0:
; VBITS_GE_256-NEXT: mov x8, #4
Expand All
@@ -413,15 +413,15 @@ define void @select_v8i64(<8 x i64>* %a, <8 x i64>* %b) #0 {
; VBITS_GE_512-NEXT: sel z0.d, p1, z0.d, z1.d
; VBITS_GE_512-NEXT: st1d { z0.d }, p0, [x0]
; VBITS_GE_512-NEXT: ret
%op1 = load <8 x i64 >, < 8 x i64 >* %a
%op2 = load <8 x i64 >, < 8 x i64 >* %b
%op1 = load <8 x i64 >, ptr %a
%op2 = load <8 x i64 >, ptr %b
%mask = icmp eq <8 x i64 > %op1 , %op2
%sel = select <8 x i1 > %mask , <8 x i64 > %op1 , <8 x i64 > %op2
store <8 x i64 > %sel , < 8 x i64 >* %a
store <8 x i64 > %sel , ptr %a
ret void
}
define void @select_v16i64 (< 16 x i64 >* %a , < 16 x i64 >* %b ) vscale_range(8 ,0 ) #0 {
define void @select_v16i64 (ptr %a , ptr %b ) vscale_range(8 ,0 ) #0 {
; CHECK-LABEL: select_v16i64:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.d, vl16
Expand All
@@ -431,15 +431,15 @@ define void @select_v16i64(<16 x i64>* %a, <16 x i64>* %b) vscale_range(8,0) #0
; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
; CHECK-NEXT: st1d { z0.d }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <16 x i64 >, < 16 x i64 >* %a
%op2 = load <16 x i64 >, < 16 x i64 >* %b
%op1 = load <16 x i64 >, ptr %a
%op2 = load <16 x i64 >, ptr %b
%mask = icmp eq <16 x i64 > %op1 , %op2
%sel = select <16 x i1 > %mask , <16 x i64 > %op1 , <16 x i64 > %op2
store <16 x i64 > %sel , < 16 x i64 >* %a
store <16 x i64 > %sel , ptr %a
ret void
}
define void @select_v32i64 (< 32 x i64 >* %a , < 32 x i64 >* %b ) vscale_range(16 ,0 ) #0 {
define void @select_v32i64 (ptr %a , ptr %b ) vscale_range(16 ,0 ) #0 {
; CHECK-LABEL: select_v32i64:
; CHECK: // %bb.0:
; CHECK-NEXT: ptrue p0.d, vl32
Expand All
@@ -449,11 +449,11 @@ define void @select_v32i64(<32 x i64>* %a, <32 x i64>* %b) vscale_range(16,0) #0
; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
; CHECK-NEXT: st1d { z0.d }, p0, [x0]
; CHECK-NEXT: ret
%op1 = load <32 x i64 >, < 32 x i64 >* %a
%op2 = load <32 x i64 >, < 32 x i64 >* %b
%op1 = load <32 x i64 >, ptr %a
%op2 = load <32 x i64 >, ptr %b
%mask = icmp eq <32 x i64 > %op1 , %op2
%sel = select <32 x i1 > %mask , <32 x i64 > %op1 , <32 x i64 > %op2
store <32 x i64 > %sel , < 32 x i64 >* %a
store <32 x i64 > %sel , ptr %a
ret void
}
Expand Down