blob: 01c83ca220b653608ff0c02567943fe57ba7ccc5 [file] [log] [blame]
; RUN: llc -O3 -mtriple=aarch64-linux-gnu %s -o - | FileCheck %s --check-prefix=CHECK-LE
; RUN: llc -O3 -mtriple=aarch64_be-linux-gnu %s -o - | FileCheck %s --check-prefix=CHECK-BE
define i16 @convert_to_bitmask16(<16 x i8> %vec) {
%cmp_result = icmp ne <16 x i8> %vec, zeroinitializer
%bitmask = bitcast <16 x i1> %cmp_result to i16
ret i16 %bitmask
}
define i16 @convert_to_bitmask8(<8 x i16> %vec) {
%cmp_result = icmp ne <8 x i16> %vec, zeroinitializer
%bitmask = bitcast <8 x i1> %cmp_result to i8
%extended_bitmask = zext i8 %bitmask to i16
ret i16 %extended_bitmask
}
; Little endian
; CHECK-LE-LABEL: .LCPI0_0:
; CHECK-LE-NEXT: .byte 1
; CHECK-LE-NEXT: .byte 2
; CHECK-LE-NEXT: .byte 4
; CHECK-LE-NEXT: .byte 8
; CHECK-LE-NEXT: .byte 16
; CHECK-LE-NEXT: .byte 32
; CHECK-LE-NEXT: .byte 64
; CHECK-LE-NEXT: .byte 128
; CHECK-LE-NEXT: .byte 1
; CHECK-LE-NEXT: .byte 2
; CHECK-LE-NEXT: .byte 4
; CHECK-LE-NEXT: .byte 8
; CHECK-LE-NEXT: .byte 16
; CHECK-LE-NEXT: .byte 32
; CHECK-LE-NEXT: .byte 64
; CHECK-LE-NEXT: .byte 128
; CHECK-LE-LABEL: .LCPI1_0:
; CHECK-LE-NEXT: .hword 1
; CHECK-LE-NEXT: .hword 2
; CHECK-LE-NEXT: .hword 4
; CHECK-LE-NEXT: .hword 8
; CHECK-LE-NEXT: .hword 16
; CHECK-LE-NEXT: .hword 32
; CHECK-LE-NEXT: .hword 64
; CHECK-LE-NEXT: .hword 128
; Big endian
; CHECK-BE-LABEL: .LCPI0_0:
; CHECK-BE-NEXT: .byte 128
; CHECK-BE-NEXT: .byte 64
; CHECK-BE-NEXT: .byte 32
; CHECK-BE-NEXT: .byte 16
; CHECK-BE-NEXT: .byte 8
; CHECK-BE-NEXT: .byte 4
; CHECK-BE-NEXT: .byte 2
; CHECK-BE-NEXT: .byte 1
; CHECK-BE-NEXT: .byte 128
; CHECK-BE-NEXT: .byte 64
; CHECK-BE-NEXT: .byte 32
; CHECK-BE-NEXT: .byte 16
; CHECK-BE-NEXT: .byte 8
; CHECK-BE-NEXT: .byte 4
; CHECK-BE-NEXT: .byte 2
; CHECK-BE-NEXT: .byte 1
; CHECK-BE-LABEL: .LCPI1_0:
; CHECK-BE-NEXT: .hword 128
; CHECK-BE-NEXT: .hword 64
; CHECK-BE-NEXT: .hword 32
; CHECK-BE-NEXT: .hword 16
; CHECK-BE-NEXT: .hword 8
; CHECK-BE-NEXT: .hword 4
; CHECK-BE-NEXT: .hword 2
; CHECK-BE-NEXT: .hword 1