1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=aarch64 | FileCheck %s 3 4; Test pattern (v4f16 (AArch64NvCast (v2i32 FPR64:$src))) 5define void @nvcast_v2i32(ptr %a) #0 { 6; CHECK-LABEL: nvcast_v2i32: 7; CHECK: // %bb.0: 8; CHECK-NEXT: movi v0.2s, #171, lsl #16 9; CHECK-NEXT: str d0, [x0] 10; CHECK-NEXT: ret 11 store volatile <4 x half> <half 0xH0000, half 0xH00AB, half 0xH0000, half 0xH00AB>, ptr %a 12 ret void 13} 14 15; Test pattern (v4f16 (AArch64NvCast (v4i16 FPR64:$src))) 16define void @nvcast_v4i16(ptr %a) #0 { 17; CHECK-LABEL: nvcast_v4i16: 18; CHECK: // %bb.0: 19; CHECK-NEXT: movi v0.4h, #171 20; CHECK-NEXT: str d0, [x0] 21; CHECK-NEXT: ret 22 store volatile <4 x half> <half 0xH00AB, half 0xH00AB, half 0xH00AB, half 0xH00AB>, ptr %a 23 ret void 24} 25 26; Test pattern (v4f16 (AArch64NvCast (v8i8 FPR64:$src))) 27define void @nvcast_v8i8(ptr %a) #0 { 28; CHECK-LABEL: nvcast_v8i8: 29; CHECK: // %bb.0: 30; CHECK-NEXT: movi v0.8b, #171 31; CHECK-NEXT: str d0, [x0] 32; CHECK-NEXT: ret 33 store volatile <4 x half> <half 0xHABAB, half 0xHABAB, half 0xHABAB, half 0xHABAB>, ptr %a 34 ret void 35} 36 37; Test pattern (v4f16 (AArch64NvCast (f64 FPR64:$src))) 38define void @nvcast_f64(ptr %a) #0 { 39; CHECK-LABEL: nvcast_f64: 40; CHECK: // %bb.0: 41; CHECK-NEXT: movi d0, #0000000000000000 42; CHECK-NEXT: str d0, [x0] 43; CHECK-NEXT: ret 44 store volatile <4 x half> zeroinitializer, ptr %a 45 ret void 46} 47 48; Test pattern (v8f16 (AArch64NvCast (v4i32 FPR128:$src))) 49define void @nvcast_v4i32(ptr %a) #0 { 50; CHECK-LABEL: nvcast_v4i32: 51; CHECK: // %bb.0: 52; CHECK-NEXT: movi v0.4s, #171, lsl #16 53; CHECK-NEXT: str q0, [x0] 54; CHECK-NEXT: ret 55 store volatile <8 x half> <half 0xH0000, half 0xH00AB, half 0xH0000, half 0xH00AB, half 0xH0000, half 0xH00AB, half 0xH0000, half 0xH00AB>, ptr %a 56 ret void 57} 58 59; Test pattern (v8f16 (AArch64NvCast (v8i16 FPR128:$src))) 60define void @nvcast_v8i16(ptr %a) #0 { 61; CHECK-LABEL: nvcast_v8i16: 62; CHECK: // %bb.0: 63; CHECK-NEXT: movi v0.8h, #171 64; CHECK-NEXT: str q0, [x0] 65; CHECK-NEXT: ret 66 store volatile <8 x half> <half 0xH00AB, half 0xH00AB, half 0xH00AB, half 0xH00AB, half 0xH00AB, half 0xH00AB, half 0xH00AB, half 0xH00AB>, ptr %a 67 ret void 68} 69 70; Test pattern (v8f16 (AArch64NvCast (v16i8 FPR128:$src))) 71define void @nvcast_v16i8(ptr %a) #0 { 72; CHECK-LABEL: nvcast_v16i8: 73; CHECK: // %bb.0: 74; CHECK-NEXT: movi v0.16b, #171 75; CHECK-NEXT: str q0, [x0] 76; CHECK-NEXT: ret 77 store volatile <8 x half> <half 0xHABAB, half 0xHABAB, half 0xHABAB, half 0xHABAB, half 0xHABAB, half 0xHABAB, half 0xHABAB, half 0xHABAB>, ptr %a 78 ret void 79} 80 81; Test pattern (v8f16 (AArch64NvCast (v2i64 FPR128:$src))) 82define void @nvcast_v2i64(ptr %a) #0 { 83; CHECK-LABEL: nvcast_v2i64: 84; CHECK: // %bb.0: 85; CHECK-NEXT: movi v0.2d, #0000000000000000 86; CHECK-NEXT: str q0, [x0] 87; CHECK-NEXT: ret 88 store volatile <8 x half> zeroinitializer, ptr %a 89 ret void 90} 91 92attributes #0 = { nounwind } 93