22 lines · plain
1// RUN: %clang_cc1 -triple x86_64-linux-pc -O3 -disable-llvm-passes %s -emit-llvm -o - | FileCheck %s2 3void Shifts(_BitInt(12) E, int i) {4 E << 99;5 // CHECK: shl i12 %{{.+}}, 36 7 77 << E;8 // CHECK: %[[PROM:.+]] = zext i12 %{{.+}} to i329 // CHECK: %[[MASK:.+]] = and i32 %[[PROM]], 3110 // CHECK: shl i32 77, %[[MASK]]11 12 E << i;13 // CHECK: %[[PROM:.+]] = trunc i32 %{{.+}} to i1214 // CHECK: %[[MASK:.+]] = urem i12 %[[PROM]], 1215 // CHECK: shl i12 %{{.+}}, %[[MASK]]16 17 i << E;18 // CHECK: %[[PROM:.+]] = zext i12 %{{.+}} to i3219 // CHECK: %[[MASK:.+]] = and i32 %[[PROM]], 3120 // CHECK: shl i32 %{{.+}}, %[[MASK]]21}22