xref: /llvm-project/llvm/test/CodeGen/Mips/cstmaterialization/isel-materialization.ll (revision ae26f50aea4ef1a6c7058019f0db11a91bbcdade)
1; RUN: llc -mtriple=mips < %s -debug 2>&1 | FileCheck %s --check-prefix=MIPS
2; RUN: llc -mtriple=mips -mattr=+micromips < %s -debug 2>&1 | FileCheck %s --check-prefix=MM
3
4; REQUIRES: asserts
5
6; Test that the correct ISA is selected for the materialization of constants.
7
8; The four parameters are picked to use these instructions: li16, addiu, lui,
9; lui+addiu.
10
11declare void @e(i32)
12declare void @f(i32, i32, i32)
13define void @g() {
14entry:
15  call void @f (i32 1, i32 2048, i32 8388608)
16  call void @e (i32 150994946)
17  ret void
18}
19
20; MIPS-LABEL: ===== Instruction selection ends:
21; MIPS-DAG: t{{[0-9]+}}: i32 = ADDiu Register:i32 $zero, TargetConstant:i32<1>
22; MIPS-DAG: t{{[0-9]+}}: i32 = ADDiu Register:i32 $zero, TargetConstant:i32<2048>
23; MIPS-DAG: t{{[0-9]+}}: i32 = LUi TargetConstant:i32<128>
24; MIPS:     t{{[0-9]+}}: ch,glue = JAL TargetGlobalAddress:i32<ptr @f>
25
26; MIPS:     t[[A:[0-9]+]]: i32 = LUi TargetConstant:i32<2304>
27; MIPS:     t{{[0-9]+}}: i32 = ORi t[[A]], TargetConstant:i32<2>
28
29; MM-LABEL: ===== Instruction selection ends:
30; MM-DAG: t{{[0-9]+}}: i32 = LI16_MM TargetConstant:i32<1>
31; MM-DAG: t{{[0-9]+}}: i32 = ADDiu_MM Register:i32 $zero, TargetConstant:i32<2048>
32; MM-DAG: t{{[0-9]+}}: i32 = LUi_MM TargetConstant:i32<128>
33; MM:     t{{[0-9]+}}: ch,glue = JAL_MM TargetGlobalAddress:i32<ptr @f>
34
35; MM:     t[[A:[0-9]+]]: i32 = LUi_MM TargetConstant:i32<2304>
36; MM:     t{{[0-9]+}}: i32 = ORi_MM t[[A]], TargetConstant:i32<2>
37