107 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=aarch64 | FileCheck %s3 4 5define <16 x half> @sitofp_i32(<16 x i32> %a) #0 {6; CHECK-LABEL: sitofp_i32:7; CHECK: // %bb.0:8; CHECK-NEXT: scvtf v0.4s, v0.4s9; CHECK-NEXT: scvtf v2.4s, v2.4s10; CHECK-NEXT: scvtf v4.4s, v1.4s11; CHECK-NEXT: fcvtn v0.4h, v0.4s12; CHECK-NEXT: fcvtn v1.4h, v2.4s13; CHECK-NEXT: scvtf v2.4s, v3.4s14; CHECK-NEXT: fcvtn2 v0.8h, v4.4s15; CHECK-NEXT: fcvtn2 v1.8h, v2.4s16; CHECK-NEXT: ret17 18 %1 = sitofp <16 x i32> %a to <16 x half>19 ret <16 x half> %120}21 22 23define <16 x half> @sitofp_i64(<16 x i64> %a) #0 {24; CHECK-LABEL: sitofp_i64:25; CHECK: // %bb.0:26; CHECK-NEXT: scvtf v0.2d, v0.2d27; CHECK-NEXT: scvtf v4.2d, v4.2d28; CHECK-NEXT: scvtf v2.2d, v2.2d29; CHECK-NEXT: scvtf v1.2d, v1.2d30; CHECK-NEXT: scvtf v6.2d, v6.2d31; CHECK-NEXT: scvtf v5.2d, v5.2d32; CHECK-NEXT: scvtf v3.2d, v3.2d33; CHECK-NEXT: fcvtn v0.2s, v0.2d34; CHECK-NEXT: fcvtn v4.2s, v4.2d35; CHECK-NEXT: fcvtn v2.2s, v2.2d36; CHECK-NEXT: fcvtn v6.2s, v6.2d37; CHECK-NEXT: fcvtn2 v0.4s, v1.2d38; CHECK-NEXT: scvtf v1.2d, v7.2d39; CHECK-NEXT: fcvtn2 v4.4s, v5.2d40; CHECK-NEXT: fcvtn2 v2.4s, v3.2d41; CHECK-NEXT: fcvtn v0.4h, v0.4s42; CHECK-NEXT: fcvtn2 v6.4s, v1.2d43; CHECK-NEXT: fcvtn v1.4h, v4.4s44; CHECK-NEXT: fcvtn2 v0.8h, v2.4s45; CHECK-NEXT: fcvtn2 v1.8h, v6.4s46; CHECK-NEXT: ret47 48 49 50 51 %1 = sitofp <16 x i64> %a to <16 x half>52 ret <16 x half> %153}54 55 56define <16 x half> @uitofp_i32(<16 x i32> %a) #0 {57; CHECK-LABEL: uitofp_i32:58; CHECK: // %bb.0:59; CHECK-NEXT: ucvtf v0.4s, v0.4s60; CHECK-NEXT: ucvtf v2.4s, v2.4s61; CHECK-NEXT: ucvtf v4.4s, v1.4s62; CHECK-NEXT: fcvtn v0.4h, v0.4s63; CHECK-NEXT: fcvtn v1.4h, v2.4s64; CHECK-NEXT: ucvtf v2.4s, v3.4s65; CHECK-NEXT: fcvtn2 v0.8h, v4.4s66; CHECK-NEXT: fcvtn2 v1.8h, v2.4s67; CHECK-NEXT: ret68 69 %1 = uitofp <16 x i32> %a to <16 x half>70 ret <16 x half> %171}72 73 74define <16 x half> @uitofp_i64(<16 x i64> %a) #0 {75; CHECK-LABEL: uitofp_i64:76; CHECK: // %bb.0:77; CHECK-NEXT: ucvtf v0.2d, v0.2d78; CHECK-NEXT: ucvtf v4.2d, v4.2d79; CHECK-NEXT: ucvtf v2.2d, v2.2d80; CHECK-NEXT: ucvtf v1.2d, v1.2d81; CHECK-NEXT: ucvtf v6.2d, v6.2d82; CHECK-NEXT: ucvtf v5.2d, v5.2d83; CHECK-NEXT: ucvtf v3.2d, v3.2d84; CHECK-NEXT: fcvtn v0.2s, v0.2d85; CHECK-NEXT: fcvtn v4.2s, v4.2d86; CHECK-NEXT: fcvtn v2.2s, v2.2d87; CHECK-NEXT: fcvtn v6.2s, v6.2d88; CHECK-NEXT: fcvtn2 v0.4s, v1.2d89; CHECK-NEXT: ucvtf v1.2d, v7.2d90; CHECK-NEXT: fcvtn2 v4.4s, v5.2d91; CHECK-NEXT: fcvtn2 v2.4s, v3.2d92; CHECK-NEXT: fcvtn v0.4h, v0.4s93; CHECK-NEXT: fcvtn2 v6.4s, v1.2d94; CHECK-NEXT: fcvtn v1.4h, v4.4s95; CHECK-NEXT: fcvtn2 v0.8h, v2.4s96; CHECK-NEXT: fcvtn2 v1.8h, v6.4s97; CHECK-NEXT: ret98 99 100 101 102 %1 = uitofp <16 x i64> %a to <16 x half>103 ret <16 x half> %1104}105 106attributes #0 = { nounwind }107