37 lines · plain
1; RUN: llc -mtriple=mips < %s -debug 2>&1 | FileCheck %s --check-prefix=MIPS2; RUN: llc -mtriple=mips -mattr=+micromips < %s -debug 2>&1 | FileCheck %s --check-prefix=MM3 4; REQUIRES: asserts5 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 void18}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