summaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/TypePromotion/AArch64/pr58843.ll
blob: 983a32029c6526df3955b0e0a1a31bc8f81bdb00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -mtriple=aarch64 -type-promotion -verify -S %s -o - | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"

; Check the case don't crash due to zext source type bitwidth
; larger than dest type bitwidth.
define i1 @test(i8 %arg) {
; CHECK-LABEL: @test(
; CHECK-NEXT:    [[EXT1:%.*]] = zext i8 [[ARG:%.*]] to i64
; CHECK-NEXT:    [[TMP1:%.*]] = and i64 [[EXT1]], 7
; CHECK-NEXT:    [[TMP2:%.*]] = trunc i64 [[TMP1]] to i32
; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i32 [[TMP2]], 0
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %ext1 = zext i8 %arg to i64
  %trunc = trunc i64 %ext1 to i3
  %ext2 = zext i3 %trunc to i8
  %cmp = icmp ne i8 %ext2, 0
  ret i1 %cmp
}