diff options
Diffstat (limited to 'llvm/test/CodeGen/AArch64/vector-to-scalar-bitmask.ll')
| -rw-r--r-- | llvm/test/CodeGen/AArch64/vector-to-scalar-bitmask.ll | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/vector-to-scalar-bitmask.ll b/llvm/test/CodeGen/AArch64/vector-to-scalar-bitmask.ll new file mode 100644 index 000000000000..01c83ca220b6 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/vector-to-scalar-bitmask.ll @@ -0,0 +1,75 @@ +; 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 |
