brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · fcda7a4 Raw
161 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc-aix- < %s | \3; RUN:   FileCheck %s4; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc64le-- < %s | \5; RUN:   FileCheck %s --check-prefix=CHECK_LE6; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64le-- < %s | \7; RUN:   FileCheck %s --check-prefix=CHECK_P8LE8define i1 @shufeq(<2 x i64> %a) #0 {9; CHECK-LABEL: shufeq:10; CHECK:       # %bb.0: # %entry11; CHECK-NEXT:    xxswapd 35, 3412; CHECK-NEXT:    lwz 3, L..C0(2) # %const.013; CHECK-NEXT:    vcmpequw 2, 2, 314; CHECK-NEXT:    lxvw4x 35, 0, 315; CHECK-NEXT:    addi 3, 1, -1616; CHECK-NEXT:    vperm 3, 2, 2, 317; CHECK-NEXT:    xxland 0, 35, 3418; CHECK-NEXT:    stxvw4x 0, 0, 319; CHECK-NEXT:    lwz 3, -12(1)20; CHECK-NEXT:    blr21;22; CHECK_LE-LABEL: shufeq:23; CHECK_LE:       # %bb.0: # %entry24; CHECK_LE-NEXT:    addis 3, 2, .LCPI0_0@toc@ha25; CHECK_LE-NEXT:    xxswapd 35, 3426; CHECK_LE-NEXT:    addi 3, 3, .LCPI0_0@toc@l27; CHECK_LE-NEXT:    lxvd2x 0, 0, 328; CHECK_LE-NEXT:    addi 3, 1, -1629; CHECK_LE-NEXT:    vcmpequw 2, 2, 330; CHECK_LE-NEXT:    xxswapd 36, 031; CHECK_LE-NEXT:    vperm 3, 2, 2, 432; CHECK_LE-NEXT:    xxland 0, 35, 3433; CHECK_LE-NEXT:    xxswapd 0, 034; CHECK_LE-NEXT:    stxvd2x 0, 0, 335; CHECK_LE-NEXT:    ld 3, -16(1)36; CHECK_LE-NEXT:    blr37;38; CHECK_P8LE-LABEL: shufeq:39; CHECK_P8LE:       # %bb.0: # %entry40; CHECK_P8LE-NEXT:    xxswapd 35, 3441; CHECK_P8LE-NEXT:    vcmpequd 2, 2, 342; CHECK_P8LE-NEXT:    xxswapd 0, 3443; CHECK_P8LE-NEXT:    mffprd 3, 044; CHECK_P8LE-NEXT:    blr45entry:46  %0 = shufflevector <2 x i64> %a, <2 x i64> poison, <2 x i32> <i32 1, i32 undef>47  %1 = icmp eq <2 x i64> %a, %048  %2 = extractelement <2 x i1> %1, i32 049  ret i1 %250}51 52define i1 @shufne(<2 x i64> %a) #0 {53; CHECK-LABEL: shufne:54; CHECK:       # %bb.0: # %entry55; CHECK-NEXT:    xxswapd 35, 3456; CHECK-NEXT:    lwz 3, L..C1(2) # %const.057; CHECK-NEXT:    vcmpequw 2, 2, 358; CHECK-NEXT:    lxvw4x 35, 0, 359; CHECK-NEXT:    addi 3, 1, -1660; CHECK-NEXT:    vperm 3, 2, 2, 361; CHECK-NEXT:    xxland 0, 35, 3462; CHECK-NEXT:    stxvw4x 0, 0, 363; CHECK-NEXT:    lwz 3, -12(1)64; CHECK-NEXT:    blr65;66; CHECK_LE-LABEL: shufne:67; CHECK_LE:       # %bb.0: # %entry68; CHECK_LE-NEXT:    addis 3, 2, .LCPI1_0@toc@ha69; CHECK_LE-NEXT:    xxswapd 35, 3470; CHECK_LE-NEXT:    addi 3, 3, .LCPI1_0@toc@l71; CHECK_LE-NEXT:    lxvd2x 0, 0, 372; CHECK_LE-NEXT:    addi 3, 1, -1673; CHECK_LE-NEXT:    vcmpequw 2, 2, 374; CHECK_LE-NEXT:    xxswapd 36, 075; CHECK_LE-NEXT:    vperm 3, 2, 2, 476; CHECK_LE-NEXT:    xxland 0, 35, 3477; CHECK_LE-NEXT:    xxswapd 0, 078; CHECK_LE-NEXT:    stxvd2x 0, 0, 379; CHECK_LE-NEXT:    ld 3, -16(1)80; CHECK_LE-NEXT:    blr81;82; CHECK_P8LE-LABEL: shufne:83; CHECK_P8LE:       # %bb.0: # %entry84; CHECK_P8LE-NEXT:    xxswapd 35, 3485; CHECK_P8LE-NEXT:    vcmpequd 2, 2, 386; CHECK_P8LE-NEXT:    xxswapd 0, 3487; CHECK_P8LE-NEXT:    mffprd 3, 088; CHECK_P8LE-NEXT:    blr89entry:90  %0 = shufflevector <2 x i64> %a, <2 x i64> poison, <2 x i32> <i32 1, i32 undef>91  %1 = icmp eq <2 x i64> %a, %092  %2 = extractelement <2 x i1> %1, i32 093  ret i1 %294}95 96define <2 x i64> @cmpeq(<2 x i64> noundef %a, <2 x i64> noundef %b) {97; CHECK-LABEL: cmpeq:98; CHECK:       # %bb.0: # %entry99; CHECK-NEXT:    lwz 3, L..C2(2) # %const.0100; CHECK-NEXT:    vcmpequw 2, 2, 3101; CHECK-NEXT:    lxvw4x 35, 0, 3102; CHECK-NEXT:    vperm 3, 2, 2, 3103; CHECK-NEXT:    xxland 34, 35, 34104; CHECK-NEXT:    blr105;106; CHECK_LE-LABEL: cmpeq:107; CHECK_LE:       # %bb.0: # %entry108; CHECK_LE-NEXT:    addis 3, 2, .LCPI2_0@toc@ha109; CHECK_LE-NEXT:    vcmpequw 2, 2, 3110; CHECK_LE-NEXT:    addi 3, 3, .LCPI2_0@toc@l111; CHECK_LE-NEXT:    lxvd2x 0, 0, 3112; CHECK_LE-NEXT:    xxswapd 36, 0113; CHECK_LE-NEXT:    vperm 3, 2, 2, 4114; CHECK_LE-NEXT:    xxland 34, 35, 34115; CHECK_LE-NEXT:    blr116;117; CHECK_P8LE-LABEL: cmpeq:118; CHECK_P8LE:       # %bb.0: # %entry119; CHECK_P8LE-NEXT:    vcmpequd 2, 2, 3120; CHECK_P8LE-NEXT:    blr121entry:122  %cmp = icmp eq <2 x i64> %a, %b123  %sext = sext <2 x i1> %cmp to <2 x i64>124  ret <2 x i64> %sext125}126 127define <2 x i64> @cmpne(<2 x i64> noundef %a, <2 x i64> noundef %b) {128; CHECK-LABEL: cmpne:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    lwz 3, L..C3(2) # %const.0131; CHECK-NEXT:    vcmpequw 2, 2, 3132; CHECK-NEXT:    lxvw4x 35, 0, 3133; CHECK-NEXT:    xxlnor 34, 34, 34134; CHECK-NEXT:    vperm 3, 2, 2, 3135; CHECK-NEXT:    xxlor 34, 35, 34136; CHECK-NEXT:    blr137;138; CHECK_LE-LABEL: cmpne:139; CHECK_LE:       # %bb.0: # %entry140; CHECK_LE-NEXT:    addis 3, 2, .LCPI3_0@toc@ha141; CHECK_LE-NEXT:    vcmpequw 2, 2, 3142; CHECK_LE-NEXT:    addi 3, 3, .LCPI3_0@toc@l143; CHECK_LE-NEXT:    lxvd2x 0, 0, 3144; CHECK_LE-NEXT:    xxlnor 34, 34, 34145; CHECK_LE-NEXT:    xxswapd 36, 0146; CHECK_LE-NEXT:    vperm 3, 2, 2, 4147; CHECK_LE-NEXT:    xxlor 34, 35, 34148; CHECK_LE-NEXT:    blr149;150; CHECK_P8LE-LABEL: cmpne:151; CHECK_P8LE:       # %bb.0: # %entry152; CHECK_P8LE-NEXT:    vcmpequd 2, 2, 3153; CHECK_P8LE-NEXT:    xxlnor 34, 34, 34154; CHECK_P8LE-NEXT:    blr155entry:156  %cmp = icmp ne <2 x i64> %a, %b157  %sext = sext <2 x i1> %cmp to <2 x i64>158  ret <2 x i64> %sext159}160 161