aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/VectorCombine/PowerPC/scalarize-ext-extract.ll
blob: a9b719920c34154e679f575836e0540e5a8d410d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -passes='vector-combine' -S -mtriple=powerpc64-ibm-aix-xcoff     %s -o - | FileCheck %s --check-prefix=BE

define i64 @g(<8 x i8> %v) {
; BE-LABEL: @g(
; BE-NEXT:    [[TMP1:%.*]] = freeze <8 x i8> [[V:%.*]]
; BE-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to i64
; BE-NEXT:    [[TMP3:%.*]] = and i64 [[TMP2]], 255
; BE-NEXT:    [[TMP4:%.*]] = lshr i64 [[TMP2]], 56
; BE-NEXT:    [[Z:%.*]] = zext <8 x i8> [[V]] to <8 x i64>
; BE-NEXT:    [[E0:%.*]] = extractelement <8 x i64> [[Z]], i32 0
; BE-NEXT:    [[E7:%.*]] = extractelement <8 x i64> [[Z]], i32 7
; BE-NEXT:    [[SUM:%.*]] = add i64 [[TMP4]], [[TMP3]]
; BE-NEXT:    ret i64 [[SUM]]
;
  %z  = zext <8 x i8> %v to <8 x i64>
  %e0 = extractelement <8 x i64> %z, i32 0
  %e7 = extractelement <8 x i64> %z, i32 7
  %sum = add i64 %e0, %e7
  ret i64 %sum
}