From fa78c228a38bba8a7d2120844e3676311f94ff77 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Tue, 20 Nov 2018 19:45:53 +0000 Subject: [PATCH] [x86] add tests for 8-bit multiply with constant; NFC This is based on the existing file for 16-bit. We also already have 32-bit and 64-bit variants. llvm-svn: 347341 --- llvm/test/CodeGen/X86/mul-constant-i8.ll | 475 +++++++++++++++++++++++++++++++ 1 file changed, 475 insertions(+) create mode 100644 llvm/test/CodeGen/X86/mul-constant-i8.ll diff --git a/llvm/test/CodeGen/X86/mul-constant-i8.ll b/llvm/test/CodeGen/X86/mul-constant-i8.ll new file mode 100644 index 0000000..3c636b1 --- /dev/null +++ b/llvm/test/CodeGen/X86/mul-constant-i8.ll @@ -0,0 +1,475 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefix=X64 + +define i8 @test_mul_by_1(i8 %x) { +; X64-LABEL: test_mul_by_1: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 1 + ret i8 %m +} + +define i8 @test_mul_by_2(i8 %x) { +; X64-LABEL: test_mul_by_2: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: addb %al, %al +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 2 + ret i8 %m +} + +define i8 @test_mul_by_3(i8 %x) { +; X64-LABEL: test_mul_by_3: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $3, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 3 + ret i8 %m +} + +define i8 @test_mul_by_4(i8 %x) { +; X64-LABEL: test_mul_by_4: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: shlb $2, %al +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 4 + ret i8 %m +} + +define i8 @test_mul_by_5(i8 %x) { +; X64-LABEL: test_mul_by_5: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $5, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 5 + ret i8 %m +} + +define i8 @test_mul_by_6(i8 %x) { +; X64-LABEL: test_mul_by_6: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $6, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 6 + ret i8 %m +} + +define i8 @test_mul_by_7(i8 %x) { +; X64-LABEL: test_mul_by_7: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $7, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 7 + ret i8 %m +} + +define i8 @test_mul_by_8(i8 %x) { +; X64-LABEL: test_mul_by_8: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: shlb $3, %al +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 8 + ret i8 %m +} + +define i8 @test_mul_by_9(i8 %x) { +; X64-LABEL: test_mul_by_9: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $9, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 9 + ret i8 %m +} + +define i8 @test_mul_by_10(i8 %x) { +; X64-LABEL: test_mul_by_10: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $10, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 10 + ret i8 %m +} + +define i8 @test_mul_by_11(i8 %x) { +; X64-LABEL: test_mul_by_11: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $11, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 11 + ret i8 %m +} + +define i8 @test_mul_by_12(i8 %x) { +; X64-LABEL: test_mul_by_12: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $12, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 12 + ret i8 %m +} + +define i8 @test_mul_by_13(i8 %x) { +; X64-LABEL: test_mul_by_13: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $13, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 13 + ret i8 %m +} + +define i8 @test_mul_by_14(i8 %x) { +; X64-LABEL: test_mul_by_14: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $14, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 14 + ret i8 %m +} + +define i8 @test_mul_by_15(i8 %x) { +; X64-LABEL: test_mul_by_15: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $15, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 15 + ret i8 %m +} + +define i8 @test_mul_by_16(i8 %x) { +; X64-LABEL: test_mul_by_16: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: shlb $4, %al +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 16 + ret i8 %m +} + +define i8 @test_mul_by_17(i8 %x) { +; X64-LABEL: test_mul_by_17: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $17, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 17 + ret i8 %m +} + +define i8 @test_mul_by_18(i8 %x) { +; X64-LABEL: test_mul_by_18: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $18, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 18 + ret i8 %m +} + +define i8 @test_mul_by_19(i8 %x) { +; X64-LABEL: test_mul_by_19: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $19, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 19 + ret i8 %m +} + +define i8 @test_mul_by_20(i8 %x) { +; X64-LABEL: test_mul_by_20: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $20, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 20 + ret i8 %m +} + +define i8 @test_mul_by_21(i8 %x) { +; X64-LABEL: test_mul_by_21: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $21, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 21 + ret i8 %m +} + +define i8 @test_mul_by_22(i8 %x) { +; X64-LABEL: test_mul_by_22: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $22, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 22 + ret i8 %m +} + +define i8 @test_mul_by_23(i8 %x) { +; X64-LABEL: test_mul_by_23: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $23, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 23 + ret i8 %m +} + +define i8 @test_mul_by_24(i8 %x) { +; X64-LABEL: test_mul_by_24: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $24, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 24 + ret i8 %m +} + +define i8 @test_mul_by_25(i8 %x) { +; X64-LABEL: test_mul_by_25: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $25, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 25 + ret i8 %m +} + +define i8 @test_mul_by_26(i8 %x) { +; X64-LABEL: test_mul_by_26: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $26, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 26 + ret i8 %m +} + +define i8 @test_mul_by_27(i8 %x) { +; X64-LABEL: test_mul_by_27: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $27, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 27 + ret i8 %m +} + +define i8 @test_mul_by_28(i8 %x) { +; X64-LABEL: test_mul_by_28: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $28, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 28 + ret i8 %m +} + +define i8 @test_mul_by_29(i8 %x) { +; X64-LABEL: test_mul_by_29: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $29, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 29 + ret i8 %m +} + +define i8 @test_mul_by_30(i8 %x) { +; X64-LABEL: test_mul_by_30: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $30, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 30 + ret i8 %m +} + +define i8 @test_mul_by_31(i8 %x) { +; X64-LABEL: test_mul_by_31: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $31, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 31 + ret i8 %m +} + +define i8 @test_mul_by_32(i8 %x) { +; X64-LABEL: test_mul_by_32: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: shlb $5, %al +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 32 + ret i8 %m +} + +define i8 @test_mul_by_37(i8 %x) { +; X64-LABEL: test_mul_by_37: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $37, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 37 + ret i8 %m +} + +define i8 @test_mul_by_41(i8 %x) { +; X64-LABEL: test_mul_by_41: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $41, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 41 + ret i8 %m +} + +define i8 @test_mul_by_62(i8 %x) { +; X64-LABEL: test_mul_by_62: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $62, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 62 + ret i8 %m +} + +define i8 @test_mul_by_66(i8 %x) { +; X64-LABEL: test_mul_by_66: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $66, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 66 + ret i8 %m +} + +define i8 @test_mul_by_73(i8 %x) { +; X64-LABEL: test_mul_by_73: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $73, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, 73 + ret i8 %m +} + +define i8 @test_mul_by_520(i8 %x) { +; X64-LABEL: test_mul_by_520: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: shlb $3, %al +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: retq + %m = mul i8 %x, 520 + ret i8 %m +} + +define i8 @test_mul_by_neg10(i8 %x) { +; X64-LABEL: test_mul_by_neg10: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $-10, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, -10 + ret i8 %m +} + +define i8 @test_mul_by_neg36(i8 %x) { +; X64-LABEL: test_mul_by_neg36: +; X64: # %bb.0: +; X64-NEXT: movl %edi, %eax +; X64-NEXT: movb $-36, %cl +; X64-NEXT: # kill: def $al killed $al killed $eax +; X64-NEXT: mulb %cl +; X64-NEXT: retq + %m = mul i8 %x, -36 + ret i8 %m +} + -- 2.7.4