1*99b862efSOliver Stannard; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2*99b862efSOliver Stannard; RUN: llc -mtriple=armv7-unknown-none-eabihf -mattr=+neon < %s | FileCheck %s --check-prefix=LE 3*99b862efSOliver Stannard; RUN: llc -mtriple=armebv7-unknown-none-eabihf -mattr=+neon < %s | FileCheck %s --check-prefix=BE 4*99b862efSOliver Stannard 5*99b862efSOliver Stannarddefine i32 @test(i64 %arg1) { 6*99b862efSOliver Stannard; LE-LABEL: test: 7*99b862efSOliver Stannard; LE: @ %bb.0: @ %entry 8*99b862efSOliver Stannard; LE-NEXT: subs r0, r0, #1 9*99b862efSOliver Stannard; LE-NEXT: mov r2, #0 10*99b862efSOliver Stannard; LE-NEXT: sbcs r0, r1, #0 11*99b862efSOliver Stannard; LE-NEXT: vldr s0, .LCPI0_0 12*99b862efSOliver Stannard; LE-NEXT: movwhs r2, #1 13*99b862efSOliver Stannard; LE-NEXT: cmp r2, #0 14*99b862efSOliver Stannard; LE-NEXT: mvnne r2, #0 15*99b862efSOliver Stannard; LE-NEXT: vmov s1, r2 16*99b862efSOliver Stannard; LE-NEXT: vmovn.i32 d16, q0 17*99b862efSOliver Stannard; LE-NEXT: vmovn.i16 d16, q8 18*99b862efSOliver Stannard; LE-NEXT: vmov.u8 r0, d16[0] 19*99b862efSOliver Stannard; LE-NEXT: and r0, r0, #1 20*99b862efSOliver Stannard; LE-NEXT: bx lr 21*99b862efSOliver Stannard; LE-NEXT: .p2align 2 22*99b862efSOliver Stannard; LE-NEXT: @ %bb.1: 23*99b862efSOliver Stannard; LE-NEXT: .LCPI0_0: 24*99b862efSOliver Stannard; LE-NEXT: .long 0xffffffff @ float NaN 25*99b862efSOliver Stannard; 26*99b862efSOliver Stannard; BE-LABEL: test: 27*99b862efSOliver Stannard; BE: @ %bb.0: @ %entry 28*99b862efSOliver Stannard; BE-NEXT: subs r1, r1, #1 29*99b862efSOliver Stannard; BE-NEXT: mov r2, #0 30*99b862efSOliver Stannard; BE-NEXT: sbcs r0, r0, #0 31*99b862efSOliver Stannard; BE-NEXT: vldr s0, .LCPI0_0 32*99b862efSOliver Stannard; BE-NEXT: movwhs r2, #1 33*99b862efSOliver Stannard; BE-NEXT: cmp r2, #0 34*99b862efSOliver Stannard; BE-NEXT: mvnne r2, #0 35*99b862efSOliver Stannard; BE-NEXT: vmov s1, r2 36*99b862efSOliver Stannard; BE-NEXT: vmovn.i32 d16, q0 37*99b862efSOliver Stannard; BE-NEXT: vmovn.i16 d16, q8 38*99b862efSOliver Stannard; BE-NEXT: vmov.u8 r0, d16[0] 39*99b862efSOliver Stannard; BE-NEXT: and r0, r0, #1 40*99b862efSOliver Stannard; BE-NEXT: bx lr 41*99b862efSOliver Stannard; BE-NEXT: .p2align 2 42*99b862efSOliver Stannard; BE-NEXT: @ %bb.1: 43*99b862efSOliver Stannard; BE-NEXT: .LCPI0_0: 44*99b862efSOliver Stannard; BE-NEXT: .long 0xffffffff @ float NaN 45*99b862efSOliver Stannardentry: 46*99b862efSOliver Stannard %insert_zero = insertelement <8 x i64> poison, i64 %arg1, i64 0 47*99b862efSOliver Stannard %splat_zero = shufflevector <8 x i64> %insert_zero, <8 x i64> poison, <8 x i32> zeroinitializer 48*99b862efSOliver Stannard %cmp_vec = icmp ule <8 x i64> <i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7>, %splat_zero 49*99b862efSOliver Stannard %first_cmp = extractelement <8 x i1> %cmp_vec, i32 0 50*99b862efSOliver Stannard %ext = zext i1 %first_cmp to i32 51*99b862efSOliver Stannard ret i32 %ext 52*99b862efSOliver Stannard} 53