diff options
| author | Vadzim Dambrouski <pftbest@gmail.com> | 2017-05-11 19:56:14 +0000 |
|---|---|---|
| committer | Vadzim Dambrouski <pftbest@gmail.com> | 2017-05-11 19:56:14 +0000 |
| commit | 38e30197c31951a6f27f781060395161313fd614 (patch) | |
| tree | 30abea07b9e8fc46e034e76fb51007fb6886fe2a /llvm/test/CodeGen/MSP430/hwmultf5.ll | |
| parent | 36acbc716d7da51dc7f1306a172eb7f512a394ae (diff) | |
| download | bcm5719-llvm-38e30197c31951a6f27f781060395161313fd614.tar.gz bcm5719-llvm-38e30197c31951a6f27f781060395161313fd614.zip | |
[MSP430] Generate EABI-compliant libcalls
Updates the MSP430 target to generate EABI-compatible libcall names.
As a byproduct, adjusts the hardware multiplier options available in
the MSP430 target, adds support for promotion of the ISD::MUL operation
for 8-bit integers, and correctly marks R11 as used by call instructions.
Patch by Andrew Wygle.
Differential Revision: https://reviews.llvm.org/D32676
llvm-svn: 302820
Diffstat (limited to 'llvm/test/CodeGen/MSP430/hwmultf5.ll')
| -rw-r--r-- | llvm/test/CodeGen/MSP430/hwmultf5.ll | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/MSP430/hwmultf5.ll b/llvm/test/CodeGen/MSP430/hwmultf5.ll new file mode 100644 index 00000000000..51ca4be4a65 --- /dev/null +++ b/llvm/test/CodeGen/MSP430/hwmultf5.ll @@ -0,0 +1,43 @@ +; RUN: llc -O0 -mhwmult=f5series < %s | FileCheck %s + +target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16-a0:16:16" +target triple = "msp430---elf" + +@g_i32 = global i32 123, align 8 +@g_i64 = global i64 456, align 8 +@g_i16 = global i16 789, align 8 + +define i16 @mpyi() #0 { +entry: +; CHECK: mpyi: + +; CHECK: call #__mspabi_mpyi_f5hw + %0 = load volatile i16, i16* @g_i16, align 8 + %1 = mul i16 %0, %0 + + ret i16 %1 +} + +define i32 @mpyli() #0 { +entry: +; CHECK: mpyli: + +; CHECK: call #__mspabi_mpyl_f5hw + %0 = load volatile i32, i32* @g_i32, align 8 + %1 = mul i32 %0, %0 + + ret i32 %1 +} + +define i64 @mpylli() #0 { +entry: +; CHECK: mpylli: + +; CHECK: call #__mspabi_mpyll_f5hw + %0 = load volatile i64, i64* @g_i64, align 8 + %1 = mul i64 %0, %0 + + ret i64 %1 +} + +attributes #0 = { nounwind } |

