1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm64-apple-darwin | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; PR20778 4*9880d681SAndroid Build Coastguard Worker; Check that the legalizer doesn't crash when scalarizing FP conversion 5*9880d681SAndroid Build Coastguard Worker; instructions' operands. The operands are all illegal on AArch64, 6*9880d681SAndroid Build Coastguard Worker; ensuring they are legalized. The results are all legal. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine <1 x double> @test_sitofp(<1 x i1> %in) { 9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sitofp: 10*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx [[GPR:w[0-9]+]], w0, #0, #1 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: scvtf d0, [[GPR]] 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker %0 = sitofp <1 x i1> %in to <1 x double> 15*9880d681SAndroid Build Coastguard Worker ret <1 x double> %0 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine <1 x double> @test_uitofp(<1 x i1> %in) { 19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_uitofp: 20*9880d681SAndroid Build Coastguard Worker; CHECK: and [[GPR:w[0-9]+]], w0, #0x1 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucvtf d0, [[GPR]] 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 23*9880d681SAndroid Build Coastguard Workerentry: 24*9880d681SAndroid Build Coastguard Worker %0 = uitofp <1 x i1> %in to <1 x double> 25*9880d681SAndroid Build Coastguard Worker ret <1 x double> %0 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @test_fptosi(<1 x fp128> %in) { 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fptosi: 30*9880d681SAndroid Build Coastguard Worker; CHECK: bl ___fixtfdi 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov d0, x0 32*9880d681SAndroid Build Coastguard Workerentry: 33*9880d681SAndroid Build Coastguard Worker %0 = fptosi <1 x fp128> %in to <1 x i64> 34*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %0 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @test_fptoui(<1 x fp128> %in) { 38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fptoui: 39*9880d681SAndroid Build Coastguard Worker; CHECK: bl ___fixunstfdi 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov d0, x0 41*9880d681SAndroid Build Coastguard Workerentry: 42*9880d681SAndroid Build Coastguard Worker %0 = fptoui <1 x fp128> %in to <1 x i64> 43*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %0 44*9880d681SAndroid Build Coastguard Worker} 45