brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 842ee55 Raw
49 lines · plain
1; RUN: llc < %s | FileCheck %s2 3target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-apple-macosx10.10.0"5 6; Function Attrs: nounwind7declare i32 @printf(ptr nocapture readonly, ...)8 9; On X86 1 is true and 0 is false, so we can't perform the combine:10; (and (setgt X,  true), (setgt Y,  true)) -> (setgt (or X, Y), true)11; This combine only works if the true value is -1.12 13 14;CHECK: cmpl15;CHECK: setl16;CHECK: cmpl17;CHECK: setl18;CHECK: orb19;CHECK: je20 21@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 122; Function Attrs: optsize ssp uwtable23define i32 @foo(i32 %a, i32 %b, ptr %c) {24if.else429:25  %cmp.i1144 = icmp eq ptr %c, null26  %cmp430 = icmp slt i32 %a, 227  %cmp432 = icmp slt i32 %b, 228  %or.cond710 = or i1 %cmp430, %cmp43229  %or.cond710.not = xor i1 %or.cond710, true30  %brmerge1448 = or i1 %cmp.i1144, %or.cond710.not31  br i1 %brmerge1448, label %ret1, label %ret232 33ret1:34  ret i32 035 36ret2:37  ret i32 138}39 40define i32 @main(i32 %argc, ptr nocapture readnone %argv) {41  %res = alloca i32, align 442  %t = call i32 @foo(i32 1, i32 2, ptr %res) #343  %v = call i32 (ptr, ...) @printf(ptr @.str, i32 %t)44  ret i32 045}46 47 48 49