From 6aae8ef164e6b909adc1a09eda5c48ae6e733f63 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Wed, 17 Jun 2020 13:39:36 +0100 Subject: [PATCH] [SCCP] Add a few more additional sext tests (NFC). --- llvm/test/Transforms/SCCP/ip-ranges-sext.ll | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/llvm/test/Transforms/SCCP/ip-ranges-sext.ll b/llvm/test/Transforms/SCCP/ip-ranges-sext.ll index b631aec..eeac47ae 100644 --- a/llvm/test/Transforms/SCCP/ip-ranges-sext.ll +++ b/llvm/test/Transforms/SCCP/ip-ranges-sext.ll @@ -112,3 +112,26 @@ define i64 @test5(i32 %x) { %ext = sext i32 %p to i64 ret i64 %ext } + +; sext is constant folded before sext -> zext conversion. +define i64 @test6(i32 %x) { +; CHECK-LABEL: @test6( +; CHECK-NEXT: ret i64 10 +; + %ext = sext i32 10 to i64 + ret i64 %ext +} + +; sext that can be converted to zext feeds another sext. +define i64 @test7(i16 %x) { +; CHECK-LABEL: @test7( +; CHECK-NEXT: [[P:%.*]] = and i16 [[X:%.*]], 15 +; CHECK-NEXT: [[EXT_1:%.*]] = sext i16 [[P]] to i32 +; CHECK-NEXT: [[EXT_2:%.*]] = sext i32 [[EXT_1]] to i64 +; CHECK-NEXT: ret i64 [[EXT_2]] +; + %p = and i16 %x, 15 + %ext.1 = sext i16 %p to i32 + %ext.2 = sext i32 %ext.1 to i64 + ret i64 %ext.2 +} -- 2.7.4