1*9880d681SAndroid Build Coastguard Worker; Basic sanity test to check that instruction operands are encoded with 2*9880d681SAndroid Build Coastguard Worker; relative IDs. 3*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %s | llvm-bcanalyzer -dump | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: verify-uselistorder < %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK: FUNCTION_BLOCK 7*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 8*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 9*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 10*9880d681SAndroid Build Coastguard Worker; CHECK: INST_RET {{.*}}op0=1 11*9880d681SAndroid Build Coastguard Workerdefine i32 @test_int_binops(i32 %a) nounwind { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker %0 = add i32 %a, %a 14*9880d681SAndroid Build Coastguard Worker %1 = sub i32 %0, %0 15*9880d681SAndroid Build Coastguard Worker %2 = mul i32 %1, %1 16*9880d681SAndroid Build Coastguard Worker ret i32 %2 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; CHECK: FUNCTION_BLOCK 21*9880d681SAndroid Build Coastguard Worker; CHECK: INST_CAST {{.*}}op0=1 22*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 23*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 24*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 25*9880d681SAndroid Build Coastguard Worker; CHECK: INST_BINOP {{.*}}op0=1 op1=1 26*9880d681SAndroid Build Coastguard Worker; CHECK: INST_RET {{.*}}op0=1 27*9880d681SAndroid Build Coastguard Workerdefine double @test_float_binops(i32 %a) nounwind { 28*9880d681SAndroid Build Coastguard Worker %1 = sitofp i32 %a to double 29*9880d681SAndroid Build Coastguard Worker %2 = fadd double %1, %1 30*9880d681SAndroid Build Coastguard Worker %3 = fsub double %2, %2 31*9880d681SAndroid Build Coastguard Worker %4 = fmul double %3, %3 32*9880d681SAndroid Build Coastguard Worker %5 = fdiv double %4, %4 33*9880d681SAndroid Build Coastguard Worker ret double %5 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; CHECK: FUNCTION_BLOCK 38*9880d681SAndroid Build Coastguard Worker; skip checking operands of INST_GEP since that depends on ordering 39*9880d681SAndroid Build Coastguard Worker; between literals and the formal parameters. 40*9880d681SAndroid Build Coastguard Worker; CHECK: INST_GEP {{.*}} 41*9880d681SAndroid Build Coastguard Worker; CHECK: INST_LOAD {{.*}}op0=1 {{.*}} 42*9880d681SAndroid Build Coastguard Worker; CHECK: INST_CMP2 op0=1 {{.*}} 43*9880d681SAndroid Build Coastguard Worker; CHECK: INST_RET {{.*}}op0=1 44*9880d681SAndroid Build Coastguard Workerdefine i1 @test_load(i32 %a, {i32, i32}* %ptr) nounwind { 45*9880d681SAndroid Build Coastguard Workerentry: 46*9880d681SAndroid Build Coastguard Worker %0 = getelementptr inbounds {i32, i32}, {i32, i32}* %ptr, i32 %a, i32 0 47*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* %0 48*9880d681SAndroid Build Coastguard Worker %2 = icmp eq i32 %1, %a 49*9880d681SAndroid Build Coastguard Worker ret i1 %2 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; CHECK: Stream type: LLVM IR 53