1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Test add with non-legal types 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @add_i8(i8 %a, i8 %b) nounwind { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker; ELF64: add_i8 8*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 4 9*9880d681SAndroid Build Coastguard Worker %0 = add i8 %a, %b 10*9880d681SAndroid Build Coastguard Worker; ELF64: add 11*9880d681SAndroid Build Coastguard Worker store i8 %0, i8* %a.addr, align 4 12*9880d681SAndroid Build Coastguard Worker ret void 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine void @add_i8_imm(i8 %a) nounwind { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker; ELF64: add_i8_imm 18*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 4 19*9880d681SAndroid Build Coastguard Worker %0 = add i8 %a, 22; 20*9880d681SAndroid Build Coastguard Worker; ELF64: addi 21*9880d681SAndroid Build Coastguard Worker store i8 %0, i8* %a.addr, align 4 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine void @add_i16(i16 %a, i16 %b) nounwind { 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker; ELF64: add_i16 28*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 29*9880d681SAndroid Build Coastguard Worker %0 = add i16 %a, %b 30*9880d681SAndroid Build Coastguard Worker; ELF64: add 31*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 32*9880d681SAndroid Build Coastguard Worker ret void 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine void @add_i16_imm(i16 %a, i16 %b) nounwind { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker; ELF64: add_i16_imm 38*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 39*9880d681SAndroid Build Coastguard Worker %0 = add i16 %a, 243; 40*9880d681SAndroid Build Coastguard Worker; ELF64: addi 41*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 42*9880d681SAndroid Build Coastguard Worker ret void 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; Test or with non-legal types 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Workerdefine void @or_i8(i8 %a, i8 %b) nounwind { 48*9880d681SAndroid Build Coastguard Workerentry: 49*9880d681SAndroid Build Coastguard Worker; ELF64: or_i8 50*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 4 51*9880d681SAndroid Build Coastguard Worker %0 = or i8 %a, %b 52*9880d681SAndroid Build Coastguard Worker; ELF64: or 53*9880d681SAndroid Build Coastguard Worker store i8 %0, i8* %a.addr, align 4 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdefine void @or_i8_imm(i8 %a) nounwind { 58*9880d681SAndroid Build Coastguard Workerentry: 59*9880d681SAndroid Build Coastguard Worker; ELF64: or_i8_imm 60*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 4 61*9880d681SAndroid Build Coastguard Worker %0 = or i8 %a, -13; 62*9880d681SAndroid Build Coastguard Worker; ELF64: ori 63*9880d681SAndroid Build Coastguard Worker store i8 %0, i8* %a.addr, align 4 64*9880d681SAndroid Build Coastguard Worker ret void 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerdefine void @or_i16(i16 %a, i16 %b) nounwind { 68*9880d681SAndroid Build Coastguard Workerentry: 69*9880d681SAndroid Build Coastguard Worker; ELF64: or_i16 70*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 71*9880d681SAndroid Build Coastguard Worker %0 = or i16 %a, %b 72*9880d681SAndroid Build Coastguard Worker; ELF64: or 73*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 74*9880d681SAndroid Build Coastguard Worker ret void 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine void @or_i16_imm(i16 %a) nounwind { 78*9880d681SAndroid Build Coastguard Workerentry: 79*9880d681SAndroid Build Coastguard Worker; ELF64: or_i16_imm 80*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 81*9880d681SAndroid Build Coastguard Worker %0 = or i16 %a, 273; 82*9880d681SAndroid Build Coastguard Worker; ELF64: ori 83*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 84*9880d681SAndroid Build Coastguard Worker ret void 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; Test sub with non-legal types 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerdefine void @sub_i8(i8 %a, i8 %b) nounwind { 90*9880d681SAndroid Build Coastguard Workerentry: 91*9880d681SAndroid Build Coastguard Worker; ELF64: sub_i8 92*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 4 93*9880d681SAndroid Build Coastguard Worker %0 = sub i8 %a, %b 94*9880d681SAndroid Build Coastguard Worker; ELF64: subf 95*9880d681SAndroid Build Coastguard Worker store i8 %0, i8* %a.addr, align 4 96*9880d681SAndroid Build Coastguard Worker ret void 97*9880d681SAndroid Build Coastguard Worker} 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Workerdefine void @sub_i8_imm(i8 %a) nounwind { 100*9880d681SAndroid Build Coastguard Workerentry: 101*9880d681SAndroid Build Coastguard Worker; ELF64: sub_i8_imm 102*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i8, align 4 103*9880d681SAndroid Build Coastguard Worker %0 = sub i8 %a, 22; 104*9880d681SAndroid Build Coastguard Worker; ELF64: addi 105*9880d681SAndroid Build Coastguard Worker store i8 %0, i8* %a.addr, align 4 106*9880d681SAndroid Build Coastguard Worker ret void 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Workerdefine void @sub_i16(i16 %a, i16 %b) nounwind { 110*9880d681SAndroid Build Coastguard Workerentry: 111*9880d681SAndroid Build Coastguard Worker; ELF64: sub_i16 112*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 113*9880d681SAndroid Build Coastguard Worker %0 = sub i16 %a, %b 114*9880d681SAndroid Build Coastguard Worker; ELF64: subf 115*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 116*9880d681SAndroid Build Coastguard Worker ret void 117*9880d681SAndroid Build Coastguard Worker} 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Workerdefine void @sub_i16_imm(i16 %a) nounwind { 120*9880d681SAndroid Build Coastguard Workerentry: 121*9880d681SAndroid Build Coastguard Worker; ELF64: sub_i16_imm 122*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 123*9880d681SAndroid Build Coastguard Worker %0 = sub i16 %a, 247; 124*9880d681SAndroid Build Coastguard Worker; ELF64: addi 125*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 126*9880d681SAndroid Build Coastguard Worker ret void 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerdefine void @sub_i16_badimm(i16 %a) nounwind { 130*9880d681SAndroid Build Coastguard Workerentry: 131*9880d681SAndroid Build Coastguard Worker; ELF64: sub_i16_imm 132*9880d681SAndroid Build Coastguard Worker %a.addr = alloca i16, align 4 133*9880d681SAndroid Build Coastguard Worker %0 = sub i16 %a, -32768; 134*9880d681SAndroid Build Coastguard Worker; ELF64: subf 135*9880d681SAndroid Build Coastguard Worker store i16 %0, i16* %a.addr, align 4 136*9880d681SAndroid Build Coastguard Worker ret void 137*9880d681SAndroid Build Coastguard Worker} 138