brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 8720869 Raw
131 lines · plain
1; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \2; RUN:   -mcpu=pwr9 -mtriple=powerpc64 < %s | FileCheck %s3define dso_local <16 x i8> @ConvertExtractedMaskBitsToVect(<16 x i8> noundef %0) local_unnamed_addr #0 {4; CHECK: .LCPI0_0:5; CHECK-NEXT: .byte	23                               # 0x176; CHECK-NEXT: .byte	23                               # 0x177; CHECK-NEXT: .byte	23                               # 0x178; CHECK-NEXT: .byte	23                               # 0x179; CHECK-NEXT: .byte	23                               # 0x1710; CHECK-NEXT: .byte	23                               # 0x1711; CHECK-NEXT: .byte	23                               # 0x1712; CHECK-NEXT: .byte	23                               # 0x1713; CHECK-NEXT: .byte	0                                # 0x014; CHECK-NEXT: .byte	0                                # 0x015; CHECK-NEXT: .byte	0                                # 0x016; CHECK-NEXT: .byte	0                                # 0x017; CHECK-NEXT: .byte	0                                # 0x018; CHECK-NEXT: .byte	0                                # 0x019; CHECK-NEXT: .byte	0                                # 0x020; CHECK-NEXT: .byte	0                                # 0x021; CHECK-LABEL: ConvertExtractedMaskBitsToVect:22; CHECK:       # %bb.0:23; CHECK-NEXT:    addis r3, r2, .LCPI0_0@toc@ha24; CHECK-NEXT:    xxlxor v3, v3, v325; CHECK-NEXT:    addi r3, r3, .LCPI0_0@toc@l26; CHECK-NEXT:    lxv vs0, 0(r3)27; CHECK-NEXT:    addis r3, r2, .LCPI0_1@toc@ha28; CHECK-NEXT:    addi r3, r3, .LCPI0_1@toc@l29; CHECK-NEXT:    xxperm v2, v3, vs030; CHECK-NEXT:    lxv vs0, 0(r3)31; CHECK-NEXT:    xxland v2, v2, vs032; CHECK-NEXT:    vcmpequb v2, v2, v333; CHECK-NEXT:    xxlnor v2, v2, v234; CHECK-NEXT:    blr35  %a4 = extractelement <16 x i8> %0, i64 736  %a5 = zext i8 %a4 to i1637  %a6 = insertelement <8 x i16> poison, i16 %a5, i64 038  %a7 = bitcast <8 x i16> %a6 to <16 x i8>39  %a8 = shufflevector <16 x i8> %a7, <16 x i8> undef, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>40  %a9 = and <16 x i8> %a8, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>41  %a10 = icmp eq <16 x i8> %a9, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>42  %a11 = sext <16 x i1> %a10 to <16 x i8>43  ret <16 x i8> %a1144}45 46define dso_local <16 x i8> @ConvertExtractedMaskBitsToVect2(<16 x i8> noundef %0) local_unnamed_addr #0 {47; CHECK: .LCPI1_0:48; CHECK-NEXT: .byte	23                               # 0x1749; CHECK-NEXT: .byte	23                               # 0x1750; CHECK-NEXT: .byte	23                               # 0x1751; CHECK-NEXT: .byte	23                               # 0x1752; CHECK-NEXT: .byte	23                               # 0x1753; CHECK-NEXT: .byte	23                               # 0x1754; CHECK-NEXT: .byte	23                               # 0x1755; CHECK-NEXT: .byte	23                               # 0x1756; CHECK-NEXT: .byte	0                                # 0x057; CHECK-NEXT: .byte	0                                # 0x058; CHECK-NEXT: .byte	0                                # 0x059; CHECK-NEXT: .byte	0                                # 0x060; CHECK-NEXT: .byte	0                                # 0x061; CHECK-NEXT: .byte	0                                # 0x062; CHECK-NEXT: .byte	0                                # 0x063; CHECK-NEXT: .byte	0                                # 0x064; CHECK-LABEL: ConvertExtractedMaskBitsToVect2:65; CHECK:       # %bb.0:66; CHECK-NEXT:    addis r3, r2, .LCPI1_0@toc@ha67; CHECK-NEXT:    xxlxor v3, v3, v368; CHECK-NEXT:    addi r3, r3, .LCPI1_0@toc@l69; CHECK-NEXT:    lxv vs0, 0(r3)70; CHECK-NEXT:    addis r3, r2, .LCPI1_1@toc@ha71; CHECK-NEXT:    addi r3, r3, .LCPI1_1@toc@l72; CHECK-NEXT:    xxperm v2, v3, vs073; CHECK-NEXT:    lxv vs0, 0(r3)74; CHECK-NEXT:    xxland v2, v2, vs075; CHECK-NEXT:    vcmpequb v2, v2, v376; CHECK-NEXT:    xxlnor v2, v2, v277; CHECK-NEXT:    blr78  %a4 = extractelement <16 x i8> %0, i64 779  %a5 = zext i8 %a4 to i3280  %a6 = insertelement <4 x i32> poison, i32 %a5, i64 081  %a7 = bitcast <4 x i32> %a6 to <16 x i8>82  %a8 = shufflevector <16 x i8> %a7, <16 x i8> undef, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>83  %a9 = and <16 x i8> %a8, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>84  %a10 = icmp eq <16 x i8> %a9, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>85  %a11 = sext <16 x i1> %a10 to <16 x i8>86  ret <16 x i8> %a1187}88 89define dso_local <16 x i8> @ConvertExtractedMaskBitsToVect3(<8 x i16> noundef %0) local_unnamed_addr #0 {90; CHECK: .LCPI2_0:91; CHECK-NEXT: .byte	22                                # 0x1692; CHECK-NEXT: .byte	23                                # 0x1793; CHECK-NEXT: .byte	22                                # 0x1694; CHECK-NEXT: .byte	23                                # 0x1795; CHECK-NEXT: .byte	22                                # 0x1696; CHECK-NEXT: .byte	23                                # 0x1797; CHECK-NEXT: .byte	22                                # 0x1698; CHECK-NEXT: .byte	23                                # 0x1799; CHECK-NEXT: .byte	0                                 # 0x0100; CHECK-NEXT: .byte	0                                 # 0x0101; CHECK-NEXT: .byte	0                                 # 0x0102; CHECK-NEXT: .byte	0                                 # 0x0103; CHECK-NEXT: .byte	0                                 # 0x0104; CHECK-NEXT: .byte	0                                 # 0x0105; CHECK-NEXT: .byte	0                                 # 0x0106; CHECK-NEXT: .byte	0                                 # 0x0107; CHECK-LABEL: ConvertExtractedMaskBitsToVect3:108; CHECK:       # %bb.0:109; CHECK-NEXT:    addis r3, r2, .LCPI2_0@toc@ha110; CHECK-NEXT:    xxlxor v3, v3, v3111; CHECK-NEXT:    addi r3, r3, .LCPI2_0@toc@l112; CHECK-NEXT:    lxv vs0, 0(r3)113; CHECK-NEXT:    addis r3, r2, .LCPI2_1@toc@ha114; CHECK-NEXT:    addi r3, r3, .LCPI2_1@toc@l115; CHECK-NEXT:    xxperm v2, v3, vs0116; CHECK-NEXT:    lxv vs0, 0(r3)117; CHECK-NEXT:    xxland v2, v2, vs0118; CHECK-NEXT:    vcmpequb v2, v2, v3119; CHECK-NEXT:    xxlnor v2, v2, v2120; CHECK-NEXT:    blr121  %a4 = extractelement <8 x i16> %0, i64 3122  %a5 = zext i16 %a4 to i32123  %a6 = insertelement <4 x i32> poison, i32 %a5, i64 0124  %a7 = bitcast <4 x i32> %a6 to <16 x i8>125  %a8 = shufflevector <16 x i8> %a7, <16 x i8> undef, <16 x i32> <i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>126  %a9 = and <16 x i8> %a8, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>127  %a10 = icmp eq <16 x i8> %a9, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>128  %a11 = sext <16 x i1> %a10 to <16 x i8>129  ret <16 x i8> %a11130}131