1*37293e69SShengchen Kan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*37293e69SShengchen Kan; RUN: llc < %s -mtriple=x86_64-pc-linux-gnux32 -mattr=+ndd -verify-machineinstrs | FileCheck %s 3*37293e69SShengchen Kan 4*37293e69SShengchen Kan 5*37293e69SShengchen Kandefine i32 @add32mi_SIB_ADSIZE(ptr nocapture noundef readonly %a, i32 noundef %b) { 6*37293e69SShengchen Kan; CHECK-LABEL: add32mi_SIB_ADSIZE: 7*37293e69SShengchen Kan; CHECK: # %bb.0: # %entry 8*37293e69SShengchen Kan; CHECK-NEXT: movl 1164(%edi,%esi,4), %eax 9*37293e69SShengchen Kan; CHECK-NEXT: addl $4660, %eax # imm = 0x1234 10*37293e69SShengchen Kan; CHECK-NEXT: retq 11*37293e69SShengchen Kanentry: 12*37293e69SShengchen Kan %add.ptr = getelementptr inbounds i32, ptr %a, i32 %b 13*37293e69SShengchen Kan %add.ptr1 = getelementptr inbounds i8, ptr %add.ptr, i32 1164 14*37293e69SShengchen Kan %0 = load i32, ptr %add.ptr1 15*37293e69SShengchen Kan %add = add nsw i32 %0, 4660 16*37293e69SShengchen Kan ret i32 %add 17*37293e69SShengchen Kan} 18*37293e69SShengchen Kan 19*37293e69SShengchen Kandeclare ptr @llvm.thread.pointer() 20*37293e69SShengchen Kan 21*37293e69SShengchen Kandefine i32 @add32mi_FS_ADSIZE(i32 %i) { 22*37293e69SShengchen Kan; CHECK-LABEL: add32mi_FS_ADSIZE: 23*37293e69SShengchen Kan; CHECK: # %bb.0: # %entry 24*37293e69SShengchen Kan; CHECK-NEXT: movl %fs:0, %eax 25*37293e69SShengchen Kan; CHECK-NEXT: addl $4660, (%eax,%edi,4), %eax # imm = 0x1234 26*37293e69SShengchen Kan; CHECK-NEXT: retq 27*37293e69SShengchen Kanentry: 28*37293e69SShengchen Kan %0 = tail call ptr @llvm.thread.pointer() 29*37293e69SShengchen Kan %arrayidx = getelementptr inbounds i32, ptr %0, i32 %i 30*37293e69SShengchen Kan %1 = load i32, ptr %arrayidx 31*37293e69SShengchen Kan %add = add nsw i32 %1, 4660 32*37293e69SShengchen Kan ret i32 %add 33*37293e69SShengchen Kan} 34*37293e69SShengchen Kan 35*37293e69SShengchen Kandefine i32 @add32mi_FS_SIB(i32 %i) { 36*37293e69SShengchen Kan; CHECK-LABEL: add32mi_FS_SIB: 37*37293e69SShengchen Kan; CHECK: # %bb.0: # %entry 38*37293e69SShengchen Kan; CHECK-NEXT: movl %fs:0, %eax 39*37293e69SShengchen Kan; CHECK-NEXT: addl $4660, %eax # imm = 0x1234 40*37293e69SShengchen Kan; CHECK-NEXT: retq 41*37293e69SShengchen Kanentry: 42*37293e69SShengchen Kan %0 = tail call ptr @llvm.thread.pointer() 43*37293e69SShengchen Kan %arrayidx = getelementptr inbounds i32, ptr %0, i32 0 44*37293e69SShengchen Kan %1 = load i32, ptr %arrayidx 45*37293e69SShengchen Kan %add = add nsw i32 %1, 4660 46*37293e69SShengchen Kan ret i32 %add 47*37293e69SShengchen Kan} 48*37293e69SShengchen Kan 49*37293e69SShengchen Kandefine i32 @add32mi_GS_ADSIZE(ptr addrspace(256) %a) { 50*37293e69SShengchen Kan; CHECK-LABEL: add32mi_GS_ADSIZE: 51*37293e69SShengchen Kan; CHECK: # %bb.0: # %entry 52*37293e69SShengchen Kan; CHECK-NEXT: movl %gs:4936(%edi), %eax 53*37293e69SShengchen Kan; CHECK-NEXT: addl $123456, %eax # imm = 0x1E240 54*37293e69SShengchen Kan; CHECK-NEXT: retq 55*37293e69SShengchen Kanentry: 56*37293e69SShengchen Kan %arrayidx = getelementptr inbounds i32, ptr addrspace(256) %a, i32 1234 57*37293e69SShengchen Kan %t = load i32, ptr addrspace(256) %arrayidx 58*37293e69SShengchen Kan %add = add i32 %t, 123456 59*37293e69SShengchen Kan ret i32 %add 60*37293e69SShengchen Kan} 61