brintos

brintos / llvm-project-archived public Read only

0
0
Text · 876 B · ccd9762 Raw
39 lines · plain
1; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck %s2 3; Check that we convert4;   zext((a * b)<nuw>)5; to6;   (zext(a) * zext(b))<nuw>7 8declare i32 @get_int();9 10; Transform doesn't apply here, because %a lacks range metadata.11; CHECK-LABEL: @no_range12define void @no_range() {13  %a = call i32 @get_int()14  %b = mul i32 %a, 415  %c = zext i32 %b to i6416  ; CHECK: %c17  ; CHECK-NEXT: --> (zext i32 (4 * %a) to i64)18  ret void19}20 21; CHECK-LABEL: @range22define void @range() {23  %a = call i32 @get_int(), !range !{i32 0, i32 100}24  %b = mul i32 %a, 425  %c = zext i32 %b to i6426  ; CHECK: %c27  ; CHECK-NEXT: --> (4 * (zext i32 %a to i64))<nuw><nsw>28  ret void29}30 31; CHECK-LABEL: @no_nuw32define void @no_nuw() {33  %a = call i32 @get_int(), !range !{i32 0, i32 3}34  %b = mul i32 %a, -10035  ; CHECK: %b36  ; CHECK-NEXT: -->  (-100 * %a)<nsw>37  ret void38}39