From 6a0551e43a1878d174c00a9e4d8ab007c4567128 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Mon, 29 Sep 2014 21:57:54 +0000 Subject: Add soft-float to the key for the subtarget lookup in the TargetMachine map, this makes sure that we can compile the same code for two different ABIs (hard and soft float) in the same module. Update one testcase accordingly (and fix some confusing naming) and add a new testcase as well with the ordering swapped which would highlight the problem. llvm-svn: 218632 --- llvm/test/CodeGen/Mips/mips16-hf-attr-2.ll | 45 ++++++++++++++++++++++++++++++ llvm/test/CodeGen/Mips/mips16-hf-attr.ll | 12 ++++---- 2 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 llvm/test/CodeGen/Mips/mips16-hf-attr-2.ll (limited to 'llvm/test') diff --git a/llvm/test/CodeGen/Mips/mips16-hf-attr-2.ll b/llvm/test/CodeGen/Mips/mips16-hf-attr-2.ll new file mode 100644 index 00000000000..60c6eaad8f7 --- /dev/null +++ b/llvm/test/CodeGen/Mips/mips16-hf-attr-2.ll @@ -0,0 +1,45 @@ +; Check that stubs generation for mips16 hard-float mode does not depend +; on the function 'use-soft-float' attribute's value. +; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel \ +; RUN: -mcpu=mips16 -relocation-model=pic < %s | FileCheck %s + +define void @bar_sf() #1 { +; CHECK: bar_sf: +entry: + %call1 = call float @foo(float 1.000000e+00) +; CHECK: lw $3, %call16(foo)($2) +; CHECK-NOT: lw $5, %got(__mips16_call_stub_sf_1)($3) + ret void +} + +define void @bar_hf() #0 { +; CHECK: bar_hf: +entry: + %call1 = call float @foo(float 1.000000e+00) +; CHECK: lw $2, %call16(foo)($3) +; CHECK: lw $5, %got(__mips16_call_stub_sf_1)($3) + ret void +} + +declare float @foo(float) #2 + +attributes #0 = { + nounwind + "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" + "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" + "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" + "unsafe-fp-math"="false" "use-soft-float"="false" +} +attributes #1 = { + nounwind + "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" + "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" + "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" + "unsafe-fp-math"="false" "use-soft-float"="true" +} +attributes #2 = { + "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" + "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" + "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" + "unsafe-fp-math"="false" "use-soft-float"="true" +} diff --git a/llvm/test/CodeGen/Mips/mips16-hf-attr.ll b/llvm/test/CodeGen/Mips/mips16-hf-attr.ll index d9ad6295bef..c6ad442fdea 100644 --- a/llvm/test/CodeGen/Mips/mips16-hf-attr.ll +++ b/llvm/test/CodeGen/Mips/mips16-hf-attr.ll @@ -3,8 +3,8 @@ ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel \ ; RUN: -mcpu=mips16 -relocation-model=pic < %s | FileCheck %s -define void @bar_sf() #0 { -; CHECK: bar_sf: +define void @bar_hf() #0 { +; CHECK: bar_hf: entry: %call1 = call float @foo(float 1.000000e+00) ; CHECK: lw $2, %call16(foo)($3) @@ -12,12 +12,12 @@ entry: ret void } -define void @bar_hf() #1 { -; CHECK: bar_hf: +define void @bar_sf() #1 { +; CHECK: bar_sf: entry: %call1 = call float @foo(float 1.000000e+00) -; CHECK: lw $2, %call16(foo)($3) -; CHECK: lw $5, %got(__mips16_call_stub_sf_1)($3) +; CHECK: lw $3, %call16(foo)($2) +; CHECK-NOT: lw $5, %got(__mips16_call_stub_sf_1)($3) ret void } -- cgit v1.2.3