1*f348ca51SNikita Popov// RUN: %clang_cc1 -triple x86_64-linux-pc -O3 -disable-llvm-passes %s -emit-llvm -o - | FileCheck %s 25f0903e9SErich Keane 36c75ab5fSAaron Ballmanvoid Shifts(_BitInt(12) E, int i) { 45f0903e9SErich Keane E << 99; 55f0903e9SErich Keane // CHECK: shl i12 %{{.+}}, 3 65f0903e9SErich Keane 75f0903e9SErich Keane 77 << E; 85f0903e9SErich Keane // CHECK: %[[PROM:.+]] = zext i12 %{{.+}} to i32 95f0903e9SErich Keane // CHECK: %[[MASK:.+]] = and i32 %[[PROM]], 31 105f0903e9SErich Keane // CHECK: shl i32 77, %[[MASK]] 115f0903e9SErich Keane 125f0903e9SErich Keane E << i; 135f0903e9SErich Keane // CHECK: %[[PROM:.+]] = trunc i32 %{{.+}} to i12 145f0903e9SErich Keane // CHECK: %[[MASK:.+]] = urem i12 %[[PROM]], 12 155f0903e9SErich Keane // CHECK: shl i12 %{{.+}}, %[[MASK]] 165f0903e9SErich Keane 175f0903e9SErich Keane i << E; 185f0903e9SErich Keane // CHECK: %[[PROM:.+]] = zext i12 %{{.+}} to i32 195f0903e9SErich Keane // CHECK: %[[MASK:.+]] = and i32 %[[PROM]], 31 205f0903e9SErich Keane // CHECK: shl i32 %{{.+}}, %[[MASK]] 215f0903e9SErich Keane} 22