X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=inline;f=test%2FCodeGen%2FMips%2Finlineasmmemop.ll;h=bdf3ae55b8028749bc42478ec7d2c7203fd712c0;hb=2d3ec5706a0a8e9de6fe9ed3dc87a0ba1a0942f0;hp=1c7c4437b892cec4e26f8a3173b8ee067203f358;hpb=1da1cdf5040e8efacf3dc3caee7ea62735655953;p=oota-llvm.git diff --git a/test/CodeGen/Mips/inlineasmmemop.ll b/test/CodeGen/Mips/inlineasmmemop.ll index 1c7c4437b89..bdf3ae55b80 100644 --- a/test/CodeGen/Mips/inlineasmmemop.ll +++ b/test/CodeGen/Mips/inlineasmmemop.ll @@ -1,17 +1,18 @@ ; RUN: llc -march=mipsel < %s | FileCheck %s +; Simple memory @g1 = external global i32 define i32 @f1(i32 %x) nounwind { entry: -; CHECK: addiu $[[T0:[0-9]+]], $sp +; CHECK-LABEL: f1: ; CHECK: #APP -; CHECK: sw $4, 0($[[T0]]) +; CHECK: sw $4, [[OFFSET:[0-9]+]]($sp) ; CHECK: #NO_APP +; CHECK: lw $[[T1:[0-9]+]], %got(g1) ; CHECK: #APP -; CHECK: lw $[[T3:[0-9]+]], 0($[[T0]]) +; CHECK: lw $[[T3:[0-9]+]], [[OFFSET]]($sp) ; CHECK: #NO_APP -; CHECK: lw $[[T1:[0-9]+]], %got(g1) ; CHECK: sw $[[T3]], 0($[[T1]]) %l1 = alloca i32, align 4 @@ -21,3 +22,26 @@ entry: ret i32 %0 } +; CHECK-LABEL: main: +; "D": Second word of a double word. This works for any memory element +; double or single. +; CHECK: #APP +; CHECK: lw ${{[0-9]+}}, 16(${{[0-9]+}}) +; CHECK: #NO_APP + +; No "D": First word of a double word. This works for any memory element +; double or single. +; CHECK: #APP +; CHECK: lw ${{[0-9]+}}, 12(${{[0-9]+}}) +; CHECK: #NO_APP + +@b = common global [20 x i32] zeroinitializer, align 4 + +define void @main() { +entry: +; Second word: + tail call void asm sideeffect " lw $0, ${1:D}", "r,*m,~{$11}"(i32 undef, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @b, i32 0, i32 3)) +; First word. Notice, no 'D': + tail call void asm sideeffect " lw $0, ${1}", "r,*m,~{$11}"(i32 undef, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @b, i32 0, i32 3)) + ret void +}