1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=aarch64-none-eabi | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <16 x half> @sitofp_i32(<16 x i32> %a) #0 { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sitofp_i32: 6*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[S0:v[0-9]+\.4s]], v0.4s 7*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[S1:v[0-9]+\.4s]], v1.4s 8*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[S2:v[0-9]+\.4s]], v2.4s 9*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[S3:v[0-9]+\.4s]], v3.4s 10*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v0.4h, [[S0]] 11*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v1.4h, [[S2]] 12*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v[[R1:[0-9]+]].4h, [[S1]] 13*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v[[R3:[0-9]+]].4h, [[S3]] 14*9880d681SAndroid Build Coastguard Worker; CHECK-DAg: ins v0.d[1], v[[R1]].d[0] 15*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins v1.d[1], v[[R3]].d[0] 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker %1 = sitofp <16 x i32> %a to <16 x half> 18*9880d681SAndroid Build Coastguard Worker ret <16 x half> %1 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine <16 x half> @sitofp_i64(<16 x i64> %a) #0 { 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sitofp_i64: 24*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D0:v[0-9]+\.2d]], v0.2d 25*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D1:v[0-9]+\.2d]], v1.2d 26*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D2:v[0-9]+\.2d]], v2.2d 27*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D3:v[0-9]+\.2d]], v3.2d 28*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D4:v[0-9]+\.2d]], v4.2d 29*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D5:v[0-9]+\.2d]], v5.2d 30*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D6:v[0-9]+\.2d]], v6.2d 31*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[D7:v[0-9]+\.2d]], v7.2d 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S0:v[0-9]+]].2s, [[D0]] 34*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S1:v[0-9]+]].2s, [[D2]] 35*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S2:v[0-9]+]].2s, [[D4]] 36*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S3:v[0-9]+]].2s, [[D6]] 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S0]].4s, [[D1]] 39*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S1]].4s, [[D3]] 40*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S2]].4s, [[D5]] 41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S3]].4s, [[D7]] 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v0.4h, [[S0]].4s 44*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v1.4h, [[S2]].4s 45*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v[[R1:[0-9]+]].4h, [[S1]].4s 46*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v[[R3:[0-9]+]].4h, [[S3]].4s 47*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins v0.d[1], v[[R1]].d[0] 48*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins v1.d[1], v[[R3]].d[0] 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker %1 = sitofp <16 x i64> %a to <16 x half> 51*9880d681SAndroid Build Coastguard Worker ret <16 x half> %1 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerdefine <16 x half> @uitofp_i32(<16 x i32> %a) #0 { 56*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uitofp_i32: 57*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[S0:v[0-9]+\.4s]], v0.4s 58*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[S1:v[0-9]+\.4s]], v1.4s 59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[S2:v[0-9]+\.4s]], v2.4s 60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[S3:v[0-9]+\.4s]], v3.4s 61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v0.4h, [[S0]] 62*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v1.4h, [[S2]] 63*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v[[R1:[0-9]+]].4h, [[S1]] 64*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v[[R3:[0-9]+]].4h, [[S3]] 65*9880d681SAndroid Build Coastguard Worker; CHECK-DAg: ins v0.d[1], v[[R1]].d[0] 66*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins v1.d[1], v[[R3]].d[0] 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker %1 = uitofp <16 x i32> %a to <16 x half> 69*9880d681SAndroid Build Coastguard Worker ret <16 x half> %1 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Workerdefine <16 x half> @uitofp_i64(<16 x i64> %a) #0 { 74*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uitofp_i64: 75*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D0:v[0-9]+\.2d]], v0.2d 76*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D1:v[0-9]+\.2d]], v1.2d 77*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D2:v[0-9]+\.2d]], v2.2d 78*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D3:v[0-9]+\.2d]], v3.2d 79*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D4:v[0-9]+\.2d]], v4.2d 80*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D5:v[0-9]+\.2d]], v5.2d 81*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D6:v[0-9]+\.2d]], v6.2d 82*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[D7:v[0-9]+\.2d]], v7.2d 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S0:v[0-9]+]].2s, [[D0]] 85*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S1:v[0-9]+]].2s, [[D2]] 86*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S2:v[0-9]+]].2s, [[D4]] 87*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[S3:v[0-9]+]].2s, [[D6]] 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S0]].4s, [[D1]] 90*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S1]].4s, [[D3]] 91*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S2]].4s, [[D5]] 92*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn2 [[S3]].4s, [[D7]] 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v0.4h, [[S0]].4s 95*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v1.4h, [[S2]].4s 96*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v[[R1:[0-9]+]].4h, [[S1]].4s 97*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn v[[R3:[0-9]+]].4h, [[S3]].4s 98*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins v0.d[1], v[[R1]].d[0] 99*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins v1.d[1], v[[R3]].d[0] 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker %1 = uitofp <16 x i64> %a to <16 x half> 102*9880d681SAndroid Build Coastguard Worker ret <16 x half> %1 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 106