brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 0b39267 Raw
112 lines · plain
1; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s2 3; Test that no vperm of the vector compare is needed for the extracts.4define void @fun() {5; CHECK-LABEL: fun:6; CHECK:       # %bb.0: # %bb7; CHECK-NEXT:    vlrepf %v0, 0(%r1)8; CHECK-NEXT:    vgbm %v1, 09; CHECK-NEXT:    vceqb %v0, %v0, %v110; CHECK-NEXT:    vuphb %v0, %v011; CHECK-NEXT:    vuphh %v0, %v012; CHECK-NEXT:    vlgvf %r0, %v0, 013; CHECK-NEXT:    tmll %r0, 114; CHECK-NEXT:    je .LBB0_215; CHECK-NEXT:  # %bb.1: # %bb116; CHECK-NEXT:  .LBB0_2: # %bb217; CHECK-NEXT:    vlgvf %r0, %v0, 118; CHECK-NEXT:    tmll %r0, 119; CHECK-NEXT:    je .LBB0_420; CHECK-NEXT:  # %bb.3: # %bb321; CHECK-NEXT:  .LBB0_4: # %bb422bb:23  %tmp = load <4 x i8>, ptr undef24  %tmp1 = icmp eq <4 x i8> zeroinitializer, %tmp25  %tmp2 = extractelement <4 x i1> %tmp1, i32 026  br i1 %tmp2, label %bb1, label %bb227 28bb1:29  unreachable30 31bb2:32  %tmp3 = extractelement <4 x i1> %tmp1, i32 133  br i1 %tmp3, label %bb3, label %bb434 35bb3:36  unreachable37 38bb4:39  unreachable40}41 42; Test that a zero index in the permute vector is used instead of VGBM, with43; a zero index into the other source operand.44define <4 x i8> @fun1(<2 x i8> %arg) {45; CHECK-LABEL:.LCPI1_0:46; CHECK-NEXT:        .byte   1                       # 0x147; CHECK-NEXT:        .byte   18                      # 0x1248; CHECK-NEXT:        .byte   0                       # 0x049; CHECK-NEXT:        .byte   18                      # 0x1250; CHECK-NEXT:        .space  151; CHECK-NEXT:        .space  152; CHECK-NEXT:        .space  153; CHECK-NEXT:        .space  154; CHECK-NEXT:        .space  155; CHECK-NEXT:        .space  156; CHECK-NEXT:        .space  157; CHECK-NEXT:        .space  158; CHECK-NEXT:        .space  159; CHECK-NEXT:        .space  160; CHECK-NEXT:        .space  161; CHECK-NEXT:        .space  162; CHECK-NEXT:        .text63; CHECK-NEXT:        .globl  fun164; CHECK-NEXT:        .p2align        465; CHECK-NEXT:        .type   fun1,@function66; CHECK-NEXT: fun1:                                  # @fun167; CHECK-NEXT:        .cfi_startproc68; CHECK-NEXT: # %bb.0:69; CHECK-NEXT:        larl    %r1, .LCPI1_070; CHECK-NEXT:        vl      %v0, 0(%r1), 371; CHECK-NEXT:        vperm   %v24, %v24, %v0, %v072; CHECK-NEXT:        br      %r1473   %res = shufflevector <2 x i8> %arg, <2 x i8> zeroinitializer,74                        <4 x i32> <i32 1, i32 2, i32 0, i32 3>75   ret <4 x i8> %res76}77 78; Same, but with the first byte indexing into an element of the zero vector.79define <4 x i8> @fun2(<2 x i8> %arg) {80; CHECK-LABEL:.LCPI2_0:81; CHECK-NEXT:        .byte   0                       # 0x082; CHECK-NEXT:        .byte   17                      # 0x1183; CHECK-NEXT:        .byte   17                      # 0x1184; CHECK-NEXT:        .byte   0                       # 0x085; CHECK-NEXT:        .space  186; CHECK-NEXT:        .space  187; CHECK-NEXT:        .space  188; CHECK-NEXT:        .space  189; CHECK-NEXT:        .space  190; CHECK-NEXT:        .space  191; CHECK-NEXT:        .space  192; CHECK-NEXT:        .space  193; CHECK-NEXT:        .space  194; CHECK-NEXT:        .space  195; CHECK-NEXT:        .space  196; CHECK-NEXT:        .space  197; CHECK-NEXT:        .text98; CHECK-NEXT:        .globl  fun299; CHECK-NEXT:        .p2align        4100; CHECK-NEXT:        .type   fun2,@function101; CHECK-NEXT:fun2:                                   # @fun2102; CHECK-NEXT:        .cfi_startproc103; CHECK-NEXT:# %bb.0:104; CHECK-NEXT:        larl    %r1, .LCPI2_0105; CHECK-NEXT:        vl      %v0, 0(%r1), 3106; CHECK-NEXT:        vperm   %v24, %v0, %v24, %v0107; CHECK-NEXT:        br      %r14108   %res = shufflevector <2 x i8> %arg, <2 x i8> zeroinitializer,109                        <4 x i32> <i32 3, i32 1, i32 1, i32 2>110   ret <4 x i8> %res111}112