1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; s4_0Imm 4*9880d681SAndroid Build Coastguard Worker; CHECK: memb(r0++#-1) = r1 5*9880d681SAndroid Build Coastguard Workerdefine i8* @foo1(i8* %a, i8 %b) { 6*9880d681SAndroid Build Coastguard Worker store i8 %b, i8* %a 7*9880d681SAndroid Build Coastguard Worker %c = getelementptr i8, i8* %a, i32 -1 8*9880d681SAndroid Build Coastguard Worker ret i8* %c 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; s4_1Imm 12*9880d681SAndroid Build Coastguard Worker; CHECK: memh(r0++#-2) = r1 13*9880d681SAndroid Build Coastguard Workerdefine i16* @foo2(i16* %a, i16 %b) { 14*9880d681SAndroid Build Coastguard Worker store i16 %b, i16* %a 15*9880d681SAndroid Build Coastguard Worker %c = getelementptr i16, i16* %a, i32 -1 16*9880d681SAndroid Build Coastguard Worker ret i16* %c 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; s4_2Imm 20*9880d681SAndroid Build Coastguard Worker; CHECK: memw(r0++#-4) = r1 21*9880d681SAndroid Build Coastguard Workerdefine i32* @foo3(i32* %a, i32 %b) { 22*9880d681SAndroid Build Coastguard Worker store i32 %b, i32* %a 23*9880d681SAndroid Build Coastguard Worker %c = getelementptr i32, i32* %a, i32 -1 24*9880d681SAndroid Build Coastguard Worker ret i32* %c 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; s4_3Imm 28*9880d681SAndroid Build Coastguard Worker; CHECK: memd(r0++#-8) = r3:2 29*9880d681SAndroid Build Coastguard Workerdefine i64* @foo4(i64* %a, i64 %b) { 30*9880d681SAndroid Build Coastguard Worker store i64 %b, i64* %a 31*9880d681SAndroid Build Coastguard Worker %c = getelementptr i64, i64* %a, i32 -1 32*9880d681SAndroid Build Coastguard Worker ret i64* %c 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker; s6Ext 36*9880d681SAndroid Build Coastguard Worker; CHECK: if (p0.new) memw(r0+#0)=#-1 37*9880d681SAndroid Build Coastguard Workerdefine void @foo5(i32* %a, i1 %b) { 38*9880d681SAndroid Build Coastguard Workerbr i1 %b, label %x, label %y 39*9880d681SAndroid Build Coastguard Workerx: 40*9880d681SAndroid Build Coastguard Worker store i32 -1, i32* %a 41*9880d681SAndroid Build Coastguard Worker ret void 42*9880d681SAndroid Build Coastguard Workery: 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker; s10Ext 47*9880d681SAndroid Build Coastguard Worker; CHECK: p0 = cmp.eq(r0, #-1) 48*9880d681SAndroid Build Coastguard Workerdefine i1 @foo7(i32 %a) { 49*9880d681SAndroid Build Coastguard Worker %b = icmp eq i32 %a, -1 50*9880d681SAndroid Build Coastguard Worker ret i1 %b 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; s11_0Ext 54*9880d681SAndroid Build Coastguard Worker; CHECK: memb(r0+#-1) = r1 55*9880d681SAndroid Build Coastguard Workerdefine void @foo8(i8* %a, i8 %b) { 56*9880d681SAndroid Build Coastguard Worker %c = getelementptr i8, i8* %a, i32 -1 57*9880d681SAndroid Build Coastguard Worker store i8 %b, i8* %c 58*9880d681SAndroid Build Coastguard Worker ret void 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; s11_1Ext 62*9880d681SAndroid Build Coastguard Worker; CHECK: memh(r0+#-2) = r1 63*9880d681SAndroid Build Coastguard Workerdefine void @foo9(i16* %a, i16 %b) { 64*9880d681SAndroid Build Coastguard Worker %c = getelementptr i16, i16* %a, i32 -1 65*9880d681SAndroid Build Coastguard Worker store i16 %b, i16* %c 66*9880d681SAndroid Build Coastguard Worker ret void 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; s11_2Ext 70*9880d681SAndroid Build Coastguard Worker; CHECK: memw(r0+#-4) = r1 71*9880d681SAndroid Build Coastguard Workerdefine void @foo10(i32* %a, i32 %b) { 72*9880d681SAndroid Build Coastguard Worker %c = getelementptr i32, i32* %a, i32 -1 73*9880d681SAndroid Build Coastguard Worker store i32 %b, i32* %c 74*9880d681SAndroid Build Coastguard Worker ret void 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker; s11_3Ext 78*9880d681SAndroid Build Coastguard Worker; CHECK: memd(r0+#-8) = r3:2 79*9880d681SAndroid Build Coastguard Workerdefine void @foo11(i64* %a, i64 %b) { 80*9880d681SAndroid Build Coastguard Worker %c = getelementptr i64, i64* %a, i32 -1 81*9880d681SAndroid Build Coastguard Worker store i64 %b, i64* %c 82*9880d681SAndroid Build Coastguard Worker ret void 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker; s12Ext 86*9880d681SAndroid Build Coastguard Worker; CHECK: if (p0.new) r0 = #-1 87*9880d681SAndroid Build Coastguard Workerdefine i32 @foo12(i32 %a, i1 %b) { 88*9880d681SAndroid Build Coastguard Workerbr i1 %b, label %x, label %y 89*9880d681SAndroid Build Coastguard Workerx: 90*9880d681SAndroid Build Coastguard Worker ret i32 -1 91*9880d681SAndroid Build Coastguard Workery: 92*9880d681SAndroid Build Coastguard Worker ret i32 %a 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker; s16Ext 96*9880d681SAndroid Build Coastguard Worker; CHECK: r0 = #-2 97*9880d681SAndroid Build Coastguard Workerdefine i32 @foo13() { 98*9880d681SAndroid Build Coastguard Worker ret i32 -2 99*9880d681SAndroid Build Coastguard Worker}